From c4a268ffb6511cb03887163f8bc7bfebd035548a Mon Sep 17 00:00:00 2001 From: PushkarDesai-06 Date: Wed, 16 Sep 2026 22:57:29 +0530 Subject: [PATCH 1/2] refactor: split app and marketing route groups MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The root layout forced `max-w-4xl` on every page, so the landing page could never run full-bleed. Move the signed-in pages under `(app)` and the landing page under `(marketing)`, and give each group its own layout: `(app)` keeps the reading-width container, `(marketing)` imposes nothing. Route groups don't appear in URLs, so every path is unchanged. The page files are pure moves — no content edits. --- app/{ => (app)}/account/page.tsx | 0 app/{ => (app)}/assessment/page.tsx | 0 app/{ => (app)}/curriculum/page.tsx | 0 app/{ => (app)}/dashboard/DashboardSkeleton.tsx | 0 app/{ => (app)}/dashboard/loading.tsx | 0 app/{ => (app)}/dashboard/page.tsx | 0 app/(app)/layout.tsx | 15 +++++++++++++++ app/{ => (app)}/learn/[lessonId]/page.tsx | 0 app/{ => (app)}/login/page.tsx | 0 app/{ => (app)}/onboarding/page.tsx | 0 app/{ => (app)}/topics/page.tsx | 0 app/{ => (app)}/tutor/page.tsx | 0 app/(marketing)/layout.tsx | 11 +++++++++++ app/{ => (marketing)}/page.tsx | 0 app/layout.tsx | 6 +++--- 15 files changed, 29 insertions(+), 3 deletions(-) rename app/{ => (app)}/account/page.tsx (100%) rename app/{ => (app)}/assessment/page.tsx (100%) rename app/{ => (app)}/curriculum/page.tsx (100%) rename app/{ => (app)}/dashboard/DashboardSkeleton.tsx (100%) rename app/{ => (app)}/dashboard/loading.tsx (100%) rename app/{ => (app)}/dashboard/page.tsx (100%) create mode 100644 app/(app)/layout.tsx rename app/{ => (app)}/learn/[lessonId]/page.tsx (100%) rename app/{ => (app)}/login/page.tsx (100%) rename app/{ => (app)}/onboarding/page.tsx (100%) rename app/{ => (app)}/topics/page.tsx (100%) rename app/{ => (app)}/tutor/page.tsx (100%) create mode 100644 app/(marketing)/layout.tsx rename app/{ => (marketing)}/page.tsx (100%) diff --git a/app/account/page.tsx b/app/(app)/account/page.tsx similarity index 100% rename from app/account/page.tsx rename to app/(app)/account/page.tsx diff --git a/app/assessment/page.tsx b/app/(app)/assessment/page.tsx similarity index 100% rename from app/assessment/page.tsx rename to app/(app)/assessment/page.tsx diff --git a/app/curriculum/page.tsx b/app/(app)/curriculum/page.tsx similarity index 100% rename from app/curriculum/page.tsx rename to app/(app)/curriculum/page.tsx diff --git a/app/dashboard/DashboardSkeleton.tsx b/app/(app)/dashboard/DashboardSkeleton.tsx similarity index 100% rename from app/dashboard/DashboardSkeleton.tsx rename to app/(app)/dashboard/DashboardSkeleton.tsx diff --git a/app/dashboard/loading.tsx b/app/(app)/dashboard/loading.tsx similarity index 100% rename from app/dashboard/loading.tsx rename to app/(app)/dashboard/loading.tsx diff --git a/app/dashboard/page.tsx b/app/(app)/dashboard/page.tsx similarity index 100% rename from app/dashboard/page.tsx rename to app/(app)/dashboard/page.tsx diff --git a/app/(app)/layout.tsx b/app/(app)/layout.tsx new file mode 100644 index 0000000..5d58b33 --- /dev/null +++ b/app/(app)/layout.tsx @@ -0,0 +1,15 @@ +/** + * Layout for the signed-in product surface. + * + * Holds the reading-width container every app page expects. The landing page + * lives in `(marketing)` instead, where it is free to run full-bleed. + */ +export default function AppLayout({ + children, +}: Readonly<{ children: React.ReactNode }>) { + return ( +
+ {children} +
+ ); +} diff --git a/app/learn/[lessonId]/page.tsx b/app/(app)/learn/[lessonId]/page.tsx similarity index 100% rename from app/learn/[lessonId]/page.tsx rename to app/(app)/learn/[lessonId]/page.tsx diff --git a/app/login/page.tsx b/app/(app)/login/page.tsx similarity index 100% rename from app/login/page.tsx rename to app/(app)/login/page.tsx diff --git a/app/onboarding/page.tsx b/app/(app)/onboarding/page.tsx similarity index 100% rename from app/onboarding/page.tsx rename to app/(app)/onboarding/page.tsx diff --git a/app/topics/page.tsx b/app/(app)/topics/page.tsx similarity index 100% rename from app/topics/page.tsx rename to app/(app)/topics/page.tsx diff --git a/app/tutor/page.tsx b/app/(app)/tutor/page.tsx similarity index 100% rename from app/tutor/page.tsx rename to app/(app)/tutor/page.tsx diff --git a/app/(marketing)/layout.tsx b/app/(marketing)/layout.tsx new file mode 100644 index 0000000..f5002a5 --- /dev/null +++ b/app/(marketing)/layout.tsx @@ -0,0 +1,11 @@ +/** + * Layout for the signed-out marketing surface. + * + * Deliberately unconstrained: the landing page composes its own full-bleed + * sections and sets its own rhythm, so no max-width or padding is imposed here. + */ +export default function MarketingLayout({ + children, +}: Readonly<{ children: React.ReactNode }>) { + return
{children}
; +} diff --git a/app/page.tsx b/app/(marketing)/page.tsx similarity index 100% rename from app/page.tsx rename to app/(marketing)/page.tsx diff --git a/app/layout.tsx b/app/layout.tsx index 71493a8..3a3d582 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -69,9 +69,9 @@ export default function RootLayout({