From 51990ca14907172e839abb42d72161e604cc0326 Mon Sep 17 00:00:00 2001
From: adilallo <39313955+adilallo@users.noreply.github.com>
Date: Fri, 6 Feb 2026 21:59:43 -0700
Subject: [PATCH] Organize app using Next.js route groups
---
app/{ => (admin)}/monitor/page.tsx | 0
app/{ => (dev)}/components-preview/page.tsx | 2 +-
app/{ => (marketing)}/blog/[slug]/page.tsx | 12 ++++++------
app/{ => (marketing)}/blog/blog.css | 0
app/{ => (marketing)}/blog/page.tsx | 4 ++--
app/{ => (marketing)}/learn/page.tsx | 12 ++++++------
app/{ => (marketing)}/page.tsx | 18 +++++++++---------
tests/pages/blog.test.jsx | 2 +-
tests/pages/home.test.jsx | 2 +-
tests/pages/page-flow.test.jsx | 2 +-
tests/pages/user-journey.test.jsx | 2 +-
11 files changed, 28 insertions(+), 28 deletions(-)
rename app/{ => (admin)}/monitor/page.tsx (100%)
rename app/{ => (dev)}/components-preview/page.tsx (99%)
rename app/{ => (marketing)}/blog/[slug]/page.tsx (96%)
rename app/{ => (marketing)}/blog/blog.css (100%)
rename app/{ => (marketing)}/blog/page.tsx (92%)
rename app/{ => (marketing)}/learn/page.tsx (87%)
rename app/{ => (marketing)}/page.tsx (78%)
diff --git a/app/monitor/page.tsx b/app/(admin)/monitor/page.tsx
similarity index 100%
rename from app/monitor/page.tsx
rename to app/(admin)/monitor/page.tsx
diff --git a/app/components-preview/page.tsx b/app/(dev)/components-preview/page.tsx
similarity index 99%
rename from app/components-preview/page.tsx
rename to app/(dev)/components-preview/page.tsx
index c02a602..f653013 100644
--- a/app/components-preview/page.tsx
+++ b/app/(dev)/components-preview/page.tsx
@@ -5,7 +5,7 @@ import RuleCard from "../components/cards/RuleCard";
import Chip from "../components/controls/Chip";
import MultiSelect from "../components/controls/MultiSelect";
import Image from "next/image";
-import { getAssetPath } from "../../lib/assetUtils";
+import { getAssetPath } from "../../../lib/assetUtils";
interface ChipData {
id: string;
diff --git a/app/blog/[slug]/page.tsx b/app/(marketing)/blog/[slug]/page.tsx
similarity index 96%
rename from app/blog/[slug]/page.tsx
rename to app/(marketing)/blog/[slug]/page.tsx
index a874791..bdd91e2 100644
--- a/app/blog/[slug]/page.tsx
+++ b/app/(marketing)/blog/[slug]/page.tsx
@@ -5,16 +5,16 @@ import {
getBlogPostBySlug,
getAllBlogPosts as getAllPosts,
type BlogPost,
-} from "../../../lib/content";
-import { logger } from "../../../lib/logger";
-import ContentBanner from "../../components/sections/ContentBanner";
-import AskOrganizer from "../../components/sections/AskOrganizer";
-import { getAssetPath, ASSETS } from "../../../lib/assetUtils";
+} from "../../../../lib/content";
+import { logger } from "../../../../lib/logger";
+import ContentBanner from "../../../components/sections/ContentBanner";
+import AskOrganizer from "../../../components/sections/AskOrganizer";
+import { getAssetPath, ASSETS } from "../../../../lib/assetUtils";
import "../blog.css";
// Code split RelatedArticles - blog-specific, below the fold
const RelatedArticles = dynamic(
- () => import("../../components/sections/RelatedArticles"),
+ () => import("../../../components/sections/RelatedArticles"),
{
loading: () => (
diff --git a/app/blog/blog.css b/app/(marketing)/blog/blog.css
similarity index 100%
rename from app/blog/blog.css
rename to app/(marketing)/blog/blog.css
diff --git a/app/blog/page.tsx b/app/(marketing)/blog/page.tsx
similarity index 92%
rename from app/blog/page.tsx
rename to app/(marketing)/blog/page.tsx
index 3062d03..62c0ad8 100644
--- a/app/blog/page.tsx
+++ b/app/(marketing)/blog/page.tsx
@@ -1,5 +1,5 @@
-import { getAllBlogPosts } from "../../lib/content";
-import ContentThumbnailTemplate from "../components/content/ContentThumbnailTemplate";
+import { getAllBlogPosts } from "../../../lib/content";
+import ContentThumbnailTemplate from "../../../components/content/ContentThumbnailTemplate";
import type { Metadata } from "next";
export const metadata: Metadata = {
diff --git a/app/learn/page.tsx b/app/(marketing)/learn/page.tsx
similarity index 87%
rename from app/learn/page.tsx
rename to app/(marketing)/learn/page.tsx
index cd9b0cd..3ff84d3 100644
--- a/app/learn/page.tsx
+++ b/app/(marketing)/learn/page.tsx
@@ -1,9 +1,9 @@
-import messages from "../../messages/en/index";
-import { getTranslation } from "../../lib/i18n/getTranslation";
-import ContentThumbnailTemplate from "../components/content/ContentThumbnailTemplate";
-import ContentLockup from "../components/type/ContentLockup";
-import AskOrganizer from "../components/sections/AskOrganizer";
-import { getAllBlogPosts } from "../../lib/content";
+import messages from "../../../messages/en/index";
+import { getTranslation } from "../../../lib/i18n/getTranslation";
+import ContentThumbnailTemplate from "../../../components/content/ContentThumbnailTemplate";
+import ContentLockup from "../../../components/type/ContentLockup";
+import AskOrganizer from "../../../components/sections/AskOrganizer";
+import { getAllBlogPosts } from "../../../lib/content";
export default function LearnPage() {
// Get real blog posts from the content system
diff --git a/app/page.tsx b/app/(marketing)/page.tsx
similarity index 78%
rename from app/page.tsx
rename to app/(marketing)/page.tsx
index 99cae4d..525b6ef 100644
--- a/app/page.tsx
+++ b/app/(marketing)/page.tsx
@@ -1,39 +1,39 @@
import dynamic from "next/dynamic";
-import messages from "../messages/en/index";
-import { getTranslation } from "../lib/i18n/getTranslation";
-import HeroBanner from "./components/sections/HeroBanner";
-import AskOrganizer from "./components/sections/AskOrganizer";
+import messages from "../../messages/en/index";
+import { getTranslation } from "../../lib/i18n/getTranslation";
+import HeroBanner from "../components/sections/HeroBanner";
+import AskOrganizer from "../components/sections/AskOrganizer";
// Code split below-the-fold components to reduce initial bundle size
-const LogoWall = dynamic(() => import("./components/sections/LogoWall"), {
+const LogoWall = dynamic(() => import("../components/sections/LogoWall"), {
loading: () => (
),
ssr: true,
});
-const NumberedCards = dynamic(() => import("./components/sections/NumberedCards"), {
+const NumberedCards = dynamic(() => import("../components/sections/NumberedCards"), {
loading: () => (
),
ssr: true,
});
-const RuleStack = dynamic(() => import("./components/sections/RuleStack"), {
+const RuleStack = dynamic(() => import("../components/sections/RuleStack"), {
loading: () => (
),
ssr: true,
});
-const FeatureGrid = dynamic(() => import("./components/sections/FeatureGrid"), {
+const FeatureGrid = dynamic(() => import("../components/sections/FeatureGrid"), {
loading: () => (
),
ssr: true,
});
-const QuoteBlock = dynamic(() => import("./components/sections/QuoteBlock"), {
+const QuoteBlock = dynamic(() => import("../components/sections/QuoteBlock"), {
loading: () => (
),
diff --git a/tests/pages/blog.test.jsx b/tests/pages/blog.test.jsx
index 5c0483d..bfd4e96 100644
--- a/tests/pages/blog.test.jsx
+++ b/tests/pages/blog.test.jsx
@@ -2,7 +2,7 @@ import { describe, it, expect, vi, beforeEach } from "vitest";
import { screen, waitFor } from "@testing-library/react";
import { renderWithProviders as render } from "../utils/test-utils";
import React from "react";
-import BlogPostPage from "../../app/blog/[slug]/page";
+import BlogPostPage from "../../app/(marketing)/blog/[slug]/page";
// Mock Next.js components
vi.mock("next/navigation", () => ({
diff --git a/tests/pages/home.test.jsx b/tests/pages/home.test.jsx
index ea16e99..20fe9d1 100644
--- a/tests/pages/home.test.jsx
+++ b/tests/pages/home.test.jsx
@@ -4,7 +4,7 @@ import {
screen,
waitFor,
} from "../utils/test-utils";
-import Page from "../../app/page";
+import Page from "../../app/(marketing)/page";
describe("Page", () => {
test("renders all main sections", async () => {
diff --git a/tests/pages/page-flow.test.jsx b/tests/pages/page-flow.test.jsx
index 0dba94b..87c3334 100644
--- a/tests/pages/page-flow.test.jsx
+++ b/tests/pages/page-flow.test.jsx
@@ -7,7 +7,7 @@ import {
import userEvent from "@testing-library/user-event";
import { vi, describe, test, expect, afterEach } from "vitest";
import React from "react";
-import Page from "../../app/page";
+import Page from "../../app/(marketing)/page";
// Mock next/dynamic to return components synchronously in tests
vi.mock("next/dynamic", () => {
diff --git a/tests/pages/user-journey.test.jsx b/tests/pages/user-journey.test.jsx
index bb52c78..1a3840a 100644
--- a/tests/pages/user-journey.test.jsx
+++ b/tests/pages/user-journey.test.jsx
@@ -7,7 +7,7 @@ import {
import userEvent from "@testing-library/user-event";
import { vi, describe, test, expect, afterEach } from "vitest";
import React from "react";
-import Page from "../../app/page";
+import Page from "../../app/(marketing)/page";
// Mock next/dynamic to return components synchronously in tests
vi.mock("next/dynamic", () => {