56 lines
3.0 KiB
Markdown
56 lines
3.0 KiB
Markdown
# Architecture Overview
|
|
|
|
## Clean Architecture Monorepo
|
|
|
|
This template implements Uncle Bob's Clean Architecture in a Turborepo + pnpm monorepo. The core principle: **dependencies point inward only**.
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────┐
|
|
│ Frameworks & Drivers (outermost) │
|
|
│ Next.js, TanStack Start, Payload CMS, │
|
|
│ Storybook, PostgreSQL, Docker │
|
|
│ ┌─────────────────────────────────────────┐ │
|
|
│ │ Interface Adapters │ │
|
|
│ │ tRPC routers, Controllers, Presenters │ │
|
|
│ │ ┌─────────────────────────────────┐ │ │
|
|
│ │ │ Application (Use Cases) │ │ │
|
|
│ │ │ Business logic, interfaces │ │ │
|
|
│ │ │ ┌─────────────────────────┐ │ │ │
|
|
│ │ │ │ Entities (innermost) │ │ │ │
|
|
│ │ │ │ Models, Errors, Zod │ │ │ │
|
|
│ │ │ └─────────────────────────┘ │ │ │
|
|
│ │ └─────────────────────────────────┘ │ │
|
|
│ └─────────────────────────────────────────┘ │
|
|
└─────────────────────────────────────────────────┘
|
|
```
|
|
|
|
## Package Map
|
|
|
|
```
|
|
packages/core → Clean architecture (entities, use cases, infra, DI)
|
|
packages/api → tRPC routers (calls core controllers)
|
|
packages/api-client → Shared React Query hooks + provider
|
|
packages/cms-core → Payload CMS config, collections, hooks
|
|
packages/cms-client → Dual-mode Payload client (local + HTTP)
|
|
packages/ui → Atomic Design + shadcn/ui + Tailwind v4
|
|
|
|
apps/web-next → Next.js 15 reference app
|
|
apps/web-tanstack → TanStack Start reference app
|
|
apps/cms → Thin Next.js shell for Payload admin
|
|
apps/storybook → Centralized Storybook instance
|
|
```
|
|
|
|
## Data Flow
|
|
|
|
```
|
|
UI → useQuery(trpc.content.list) → tRPC Router → Controller → Use Case → Repository → Payload Local API → PostgreSQL
|
|
```
|
|
|
|
## Key Design Decisions
|
|
|
|
- **InversifyJS DI** — symbol-based resolution, documented in di/AGENTS.md
|
|
- **Dual-mode CMS client** — Local API for server-side (no HTTP overhead), HTTP for external
|
|
- **Atomic Design** — atoms/molecules/organisms/templates, co-located stories
|
|
- **tRPC single data path** — all data (including CMS content) flows through tRPC
|
|
- **Agent-optimized docs** — AGENTS.md at every level with rules, recipes, tables
|