Skip to content

Main concepts in the current dev architecture ​

Source main ad33ecb44f208d91e69aae215471e70941111483; architectural authority dev 7c3f0079f7a4847ff698c508470757ca81e64b36. New paths below are proposed additions; existing dev paths are verified in the architecture evidence. The exhaustive 185-file mapping is file-classification.md, also embedded in the manifest.

Ownership and boundaries ​

Binding refinements: 11 defines separate marketing/product visual primitives, two-way CSS containment, explicit portal/cookie behavior, route ownership and the shared-component reuse matrix. Do not extend product UI with marketing variants.

Main artifactPurposeCurrent dev equivalent / destinationAdaptation
app/(site)/layout.tsxPublic fonts, CSS, transition providerExisting app/(marketing)/layout.tsxExtend this layout. Keep MarketingQueryProvider; scope new style wrapper .cc-root; install transition/motion inside it. Keep a single shell-owned Footer.
app/(site)/page.tsx, _components/Home.tsxServer metadata plus audience-switched homeExisting app/(marketing)/page.tsx; new surfaces/marketing/components/Home.tsxConvert route to server metadata wrapper and place interactive composition in client Home; don't mark entire content/SEO module client.
app/(site)/_components/Nav.tsxPublic navsurfaces/marketing/components/Navbar.tsxReplace presentation in current surface; preserve route-aware menu cleanup and improve hidden-CTA focus.
_components/{Hero,Footer,Faq,Stats,Process,...}Public sectionsExisting matching marketing components or new surfaces/marketing/components/{Hero,Footer,Faq,Stats,Process,...}.tsxSelect final composition, not all exported historical sections. Old FAQAccordion/BrandStats/HowItWorks may become unused, but don't delete until import graph proves it.
_components/{ui,util,Counter,CcVideo,ClipWindow,CampaignArt}.tsx/tsToybox-specific primitivesNew files under surfaces/marketing/components/Keep visual primitives local to marketing; do not replace dev shared product components. Pure helpers stay server-callable; hooks and playback remain client.
app/components/{Reveal,SmoothScroll}.tsxGlobal effects on old siteNew marketing components mounted by (marketing)/layoutRoute-group ownership replaces fragile old exclusions. Cleanup Lenis/html state and observers at unmount.
app/components/AudienceTheme.tsxAudience statesurfaces/marketing/providers/AudienceTheme.tsxKeep one root-mounted instance; add home-only persistence/query behavior and update consumers atomically. Dev CookieConsent currently does not consume it. Never alter authenticated roles or clippingExperience.
app/components/CookieConsent.tsxShared consent UIshared/components/common/CookieConsent.tsx; marketing MarketingCookiePresentation.tsx/styles/cookie.module.cssOne shared v2 state owner; isolated marketing presentation. Keep dev compact visible /contact behavior and current font; product unchanged.
app/components/PlatformIcons.tsxBrand/platform iconsshared/components/ui/PlatformIcons.tsxAdd missing X icon export if needed, preserve all current consumers.
app/lib/content.tsMarketing copy/stats/linksNew surfaces/marketing/content.tsSeparate curated marketing claims from backend/business data. Remove stale comments describing concepts, not useful content.
app/lib/campaignData.ts, _components/cases.tsCase records plus display overridesExisting surfaces/marketing/case-studies/campaignData.ts; new sibling cases.tsPreserve dev ownership, merge Kill Streak/ForgeGUI evidence and exact listing order. Audit duplicate summary fields against full records.
app/lib/guideData.tsGuide proseExisting features/creator-guides/guideData.tsThe main move is already represented differently in dev; use existing records.
app/(site)/campaigns/**, services/contact/guides/privacy/termsExisting public URLsExisting corresponding app/(marketing)/** filesReplace page presentation; avoid duplicate layout head/footer. Case studies remain static marketing, not product campaign data.
New clipping/careers routesPublic informational pagesNew app/(marketing)/clipping/page.tsx, careers/page.tsx; CareersRoles in marketing componentsNew URLs inside existing surface; role dialog gets focus handling.
Creator page/apply/start route wrappersAcquisition landing/educationNew app/(marketing)/creators/{page,apply/page,start/page}.tsxSeparate public funnel from authenticated /onboarding and account verification. Metadata remains in server wrappers.
Creator UI _components/{Proof,Apply,Start,SectionHeadServer}PresentationNew surfaces/marketing/creators/*.tsxClient components only where state is required; preserve server section-head helper.
Creator _content, _progress, _actionsContent, browser progress, optional deliveryNew features/creator-acquisition/{content,progress,actions}.tsValidate state/input; server-only action stays isolated; no API/role/membership architecture invented.
Creator StartTransition + curtainsPublic navigation effectNew surfaces/marketing/providers/StartTransition.tsx, surfaces/marketing/curtains.tsProvider survives public page transition; no product-root installation.
site.css, creators.cssVisual systemNew surfaces/marketing/styles/{site,creators}.cssScope all selectors and rename marketing cr-* classes/keyframes to cc-cr-*; prefix alone cannot beat unlayered dev cr-card. Preserve final layer ordering.
_seo, JsonLd, root metadataPage discoveryNew surfaces/marketing/seo.ts, marketing JsonLd; targeted edits in existing app/layout.tsxKeep force-dynamic, Telemetry, ToastViewport, existing provider wiring and token-page metadata.
Site catch-all/not-foundBranded fallbackNew (marketing)/not-found.tsx onlyOmit catch-all; no new /r route or rewrite changes. Bad case/guide slugs get group404; globally unknown URLs retain dev404.
Old /book-call removedBooking moved to contactExisting app/(marketing)/book-call/page.tsx and nested layoutServer307 to fixed /contact retaining query pairs; remove obsolete nested metadata. No backend booking deletion.
app/onboarding/page.tsx, app/dashboard/profile/page.tsx label hunksCreator-oriented experience vocabularyExisting features/auth/data/onboardingOptions.ts and features/profile/data/profileOptions.tsChange the professional label in both option arrays and beginner description only in onboarding. Profile components/AccountPanel.tsx:3,70–71 consumes the feature array; do not edit/rebuild ProfileScreen for this copy. Preserve stored values and clippingExperience.

Product work that has no main file-level equivalent ​

Dev's app/(content-rewards) routes delegate to surfaces/content-rewards/screens, while features/* owns API clients, hooks, data and tests. Main's app-local dashboard files are not reusable. The detailed dev map locates auth, admin access, campaigns, funding/invoices, payouts, submissions, analytics, support, groups and token reports with symbols/line references.

Preserve these boundaries:

  • useDashboardSession and features/auth/api/login.ts: backend cookie session, credentialed requests, Whop/Google/gated Discord, restricted-account handling and returnTo.
  • adminFetch, AdminAccessContext, AdminAccessBoundary, adminRouteAccess: stale-capability mutation prevention, UI route permissions, backend authorization.
  • features/admin/campaign-management/api/campaignFunding.ts and public invoice reader: canonical invoice/receipt/allocation contract, public token no-store/no-referrer reads, explicit fee handling.
  • features/payouts/* and current screens: Whop-only state/eligibility, never main's legacy multi-rail payout pages.
  • features/submissions/*, features/admin/submissions/*: approved/private eligibility, manual submission, review command/query behavior.
  • features/support/api/supportChat.ts and SupportScreen.tsx: authenticated Whop chat embedding and support permissions.
  • features/admin/clipper-groups/*: group membership, campaign scope, versioned rates and analytics; public funnel track names never grant membership.
  • shared/components/common/Telemetry.tsx: drop events for /share/report/ token-bearing URLs; keep private report metadata and invoice protections.
  • next.config.ts: standalone/container output, permission-simulator settings, /r/:code same-origin affiliate rewrite; package.json current dependencies and nested test discovery.

No scraper source was inspected: frontend marketing reads Roblox through Next routes, not submission-metric scheduling. BloxClips scheduling and Crawlee execution remain out of scope.