Repository Structure
A guided tour of the ITU monorepo layout.
Next.js frontend (port 3000)
Documentation site (port 3002)
Payload CMS (port 3001)
Hono Gateway API (port 4000)
WordPress headless theme
Shared component library (@itu/ui)
Documentation components (@itu/docs-ui)
AI-powered UI components (@itu/ai-ui)
Shared utility functions (@itu/utils)
MDX provider and prose presets (@itu/mdx)
Shared Tailwind theme and tokens (@itu/tailwind-config)
Shared TypeScript configurations (@itu/tsconfig)
Shared ESLint rules (@itu/eslint-config)
WordPress block UI (@itu/wp-ui)
overview.md
gateway.md
wp-plugin.md
Change proposals and specs
Docker Compose files for local services
Build and CI helper scripts
turbo.json
pnpm-workspace.yaml
package.json
Applications (apps/)
Each directory in apps/ is an independently deployable application with its own package.json. They all share packages from the packages/ directory via pnpm workspace linking.
| App | Purpose | Tech |
|---|---|---|
web | Public-facing frontend | Next.js 15, App Router |
docs | Developer and content-manager documentation | Next.js 15, MDX |
cms | Structured content management | Payload CMS |
gateway | API aggregation layer | Hono |
wp-theme | Headless WordPress theme | PHP |
Shared packages (packages/)
Packages are imported by their workspace name (e.g. @itu/ui). Turborepo ensures they are built in the correct dependency order.
| Package | Description |
|---|---|
@itu/ui | Core component library with CVA-powered variants |
@itu/docs-ui | Documentation-specific components (Callout, CodeBlock, FileTree, etc.) |
@itu/ai-ui | AI-powered UI components |
@itu/utils | Shared helpers: formatDate, slugify, clamp |
@itu/mdx | MDX component provider and prose styling presets |
@itu/tailwind-config | Design tokens, theme CSS, and font configuration |
@itu/tsconfig | Base TypeScript configurations |
@itu/eslint-config | ESLint rule presets |
@itu/wp-ui | WordPress block editor UI components |
Configuration files
turbo.json— Turborepo pipeline configuration defining task dependencies and caching.pnpm-workspace.yaml— declaresapps/*andpackages/*as workspace roots.eslint.config.js— root ESLint config extending@itu/eslint-config.concepts/— living architecture documentation, updated as the system evolves.openspec/— structured change proposals reviewed before implementation.