Skip to content

Folder Structure

An overview of the project directory layout and what each part is responsible for.

Project Tree

flux-dashboard/
├── public/                     # Static assets (favicon, images)
├── e2e/                        # Playwright end-to-end tests
│   └── smoke.spec.ts
├── src/
│   ├── app/
│   │   ├── (auth)/             # Auth pages (standalone layout)
│   │   │   ├── sign-in/
│   │   │   ├── sign-up/
│   │   │   ├── forgot-password/
│   │   │   ├── reset-password/
│   │   │   ├── two-factor/
│   │   │   ├── verify-email/
│   │   │   └── lock-screen/
│   │   ├── (dashboard)/        # Dashboard routes (sidebar + header layout)
│   │   │   ├── activity/
│   │   │   ├── analytics/
│   │   │   ├── billing/
│   │   │   ├── calendar/
│   │   │   ├── changelog/
│   │   │   ├── charts/         # Charts showcase (Radar, Treemap, etc.)
│   │   │   ├── chat/
│   │   │   ├── crm/
│   │   │   ├── customers/
│   │   │   ├── deployments/
│   │   │   ├── ecommerce/
│   │   │   ├── feature-flags/
│   │   │   ├── feedback/
│   │   │   ├── files/
│   │   │   ├── invoices/
│   │   │   ├── kanban/
│   │   │   ├── mail/
│   │   │   ├── notifications/
│   │   │   ├── orders/         # CRUD (list, [id], new, [id]/edit)
│   │   │   ├── pricing/
│   │   │   ├── products/       # CRUD (list, [id], new, [id]/edit)
│   │   │   ├── profile/
│   │   │   ├── roadmap/
│   │   │   ├── saas/
│   │   │   ├── settings/
│   │   │   ├── sprints/
│   │   │   ├── support/
│   │   │   ├── users/          # User management (CRUD, roles, permissions)
│   │   │   ├── wizard/
│   │   │   ├── layout.tsx      # Dashboard shell (sidebar + header)
│   │   │   └── page.tsx        # Home / overview
│   │   ├── docs/               # Built-in documentation site
│   │   ├── globals.css         # Tailwind config + OKLCh color tokens
│   │   ├── layout.tsx          # Root layout (ThemeProvider, fonts)
│   │   └── not-found.tsx       # Custom 404 page
│   ├── components/
│   │   └── dashboard/          # Sidebar, Header, Shell, Charts, Customizer
│   │       ├── sidebar.tsx
│   │       ├── sidebar-context.tsx
│   │       ├── header.tsx
│   │       ├── dashboard-shell.tsx
│   │       ├── theme-customizer.tsx
│   │       ├── top-nav.tsx
│   │       └── ...
│   ├── lib/
│   │   ├── navigation.ts       # Dashboard sidebar nav config
│   │   ├── docs-navigation.ts  # Docs sidebar nav config
│   │   └── utils.ts            # cn() helper (clsx + tailwind-merge)
│   └── test/                   # Vitest setup and type declarations
├── vitest.config.ts            # Vitest test configuration
├── playwright.config.ts        # Playwright E2E configuration
├── components.json             # shadcn/ui CLI configuration
├── tsconfig.json               # TypeScript configuration
├── next.config.ts              # Next.js configuration
├── .storybook/                 # Storybook configuration
└── package.json

Key Directories

src/app/(dashboard)/

All dashboard pages live inside this route group. The parentheses tell Next.js this is a grouping folder — it does not appear in the URL. Every page here automatically inherits the dashboard layout (sidebar, header, and content shell). Flux adds specialty pages for dev-tool workflows: activity, changelog, deployments, feature-flags, feedback, roadmap, and sprints.

src/app/(auth)/

Authentication and utility pages (sign-in, sign-up, forgot password, reset password, two-factor, email verification, lock screen) have their own layout without the dashboard chrome. They use a centered card design.

src/app/docs/

The documentation site (what you are reading now). It lives outside the route groups and has its own dedicated layout with a sidebar navigation.

src/components/dashboard/

Higher-level components that compose the dashboard UI: sidebar, header, theme customizer, top-nav, stats cards, charts, and activity feeds. UI primitives (Button, Card, etc.), shared components (DataTable, PageHeader, etc.), and the ThemeProvider are imported from @dashboardpack/core rather than vendored locally.

src/lib/

Local utilities and configuration. The navigation.ts file defines all sidebar links. The docs-navigation.ts file defines the docs sidebar links. The utils.ts file exports the cn() class-merging function. Mock data, i18n infrastructure, and additional shared utilities are provided by @dashboardpack/core.

Path Aliases

The project uses two import patterns configured in tsconfig.json:

"@/*" → "src/*"

// From @dashboardpack/core (UI, shared components, data, i18n):
import { Button } from "@dashboardpack/core/components/ui/button";

// Local files with @/ alias:
import { navigation } from "@/lib/navigation";

Local imports use the @/ alias. UI primitives, shared components, mock data, and i18n are imported directly from @dashboardpack/core.

Next Steps

Learn how to customize the look and feel in the Theming guide, or see how to add new pages to the dashboard.