App Router-based Next.js 16 starter kit with DDD architecture, TanStack Query, atomic component structure, Storybook 10, Tailwind CSS 4, and lint automation already wired in.
- Next.js 16 with TypeScript, React 19, server components, and server actions.
- DDD/Clean Architecture: Domain-driven design with Domain, Application, and Infrastructure layers.
- TanStack Query v5: Modern data synchronization with mutations for server actions.
- Digital Agency Design System: Government-standard accessible UI components.
- Storybook 10: Component workbench for atoms, organisms, and pages.
- Tailwind CSS 4: Utility-first styling with SCSS modules support.
- State & Data: Recoil state management, SWR data fetching, TanStack Query mutations.
- Tooling: ESLint 9, Stylelint, Prettier, and Husky + lint-staged pre-commit hooks.
- Node.js 24.11.0 (see
.node-version; usenvm,fnm, etc. to align locally). - pnpm 10+ (package manager).
- Install dependencies with
pnpm install.
- Run
npm run devto start the Next.js dev server at http://localhost:3000. - Edit routes in
src/app/…or components insrc/components/…; hot reload is enabled by default.
npm run dev– Next.js development server with hot refresh.npm run build– Production bundle (uses the Webpack-based builder configured for Next 16).npm run start– Serve the latest production build locally.npm run lint– ESLint across the project with--max-warnings=0.npm run storybook– Launch Storybook at http://localhost:6006.npm run build-storybook– Generate the static Storybook build intostorybook-static/.
src/
├── app/ # Next.js App Router (Presentation)
│ ├── layout.tsx # Root layout
│ ├── providers.tsx # QueryClient, HeroUI providers
│ ├── inquiry/ # Inquiry pages
│ └── photo-content/ # PhotoContent pages
│
├── features/ # Feature modules (Presentation)
│ ├── inquiry/
│ │ ├── actions.ts # Server Actions
│ │ └── components/ # Feature-specific UI
│ ├── photo-content/
│ │ └── actions.ts
│ ├── dashboard/
│ └── common/
│ └── notifications/ # Toast notifications
│
├── hooks/ # Custom React hooks (Presentation)
│ ├── mutations/ # TanStack Query mutations
│ └── queries/ # TanStack Query queries
│
├── components/ # Shared UI components
│ ├── ui/ # Digital Agency Design System
│ └── layout/ # Layout components
│
└── server/ # Backend layers (DDD)
├── domain/ # Domain Layer
│ ├── models/ # Entities (Inquiry, PhotoContent)
│ ├── value-objects/ # Value Objects (Email, Status)
│ ├── repositories/ # Repository interfaces
│ └── services/ # Domain services
│
├── application/ # Application Layer
│ ├── use-cases/ # Business logic orchestration
│ └── dtos/ # Data Transfer Objects
│
└── infrastructure/ # Infrastructure Layer
├── repositories/ # Repository implementations
├── mappers/ # Domain ↔ DTO mappers
├── di/ # Dependency injection
└── cache/ # TanStack Query cache keys
public/ # Static assets
.storybook/ # Storybook configuration
- Tailwind CSS 4 powers utility classes; extend design tokens in
tailwind.config.ts. - Component styles stay next to their implementation (
Component.tsx,Component.scss,Component.stories.ts). src/app/providers.tsxwraps the tree withNextUIProviderso HeroUI/NextUI components share theme state.- The
Twemojiatom serves emoji as SVGs via CDN, and Font Awesome is ready for icon usage in pages. - Uses Digital Agency Design System for accessible and government-standard UI components.
- Icons and illustrations are provided by the Digital Agency Design System.
- Stories follow the
Component.stories.tsnaming convention inside each component folder. - Run
npm run storybookfor the component workbench; it mirrors the page atsrc/app/story/page.tsxfor quick smoke tests. - Use Storybook controls and links addons to explore different states before wiring live data.
- Husky’s
pre-commithook executes lint-staged: ESLint for TS/JS, Stylelint for SCSS, and Prettier formatting. - Run
npm run lintbefore pushing to catch import order and TypeScript issues early. - For manual formatting, run
npx prettier --writeandnpx stylelint src/**/*.{css,scss,sass}as needed.
- Build with
npm run build, then verify locally vianpm run start. - Target Node 24.11.0 in CI/CD; keeping local versions aligned avoids build drift.
- Deploy to Vercel or any Node host that supports Next.js 16.