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.

AppPurposeTech
webPublic-facing frontendNext.js 15, App Router
docsDeveloper and content-manager documentationNext.js 15, MDX
cmsStructured content managementPayload CMS
gatewayAPI aggregation layerHono
wp-themeHeadless WordPress themePHP

Shared packages (packages/)

Packages are imported by their workspace name (e.g. @itu/ui). Turborepo ensures they are built in the correct dependency order.

PackageDescription
@itu/uiCore component library with CVA-powered variants
@itu/docs-uiDocumentation-specific components (Callout, CodeBlock, FileTree, etc.)
@itu/ai-uiAI-powered UI components
@itu/utilsShared helpers: formatDate, slugify, clamp
@itu/mdxMDX component provider and prose styling presets
@itu/tailwind-configDesign tokens, theme CSS, and font configuration
@itu/tsconfigBase TypeScript configurations
@itu/eslint-configESLint rule presets
@itu/wp-uiWordPress block editor UI components

Configuration files

  • turbo.json — Turborepo pipeline configuration defining task dependencies and caching.
  • pnpm-workspace.yaml — declares apps/* and packages/* 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.