Quick Start

Get the ITU monorepo running locally.

Prerequisites

Before you begin, make sure the following tools are installed on your machine.

ToolVersionPurposeInstall
Node.js20+JavaScript runtime for all apps and packageshttps://nodejs.org
pnpm9+Fast, disk-efficient package manager (required — npm/yarn won't work)npm install -g pnpm
Git2.30+Version controlhttps://git-scm.com
Docker Desktop4+Runs WordPress + MariaDB locally via Docker Composehttps://docker.com/products/docker-desktop
TurborepoautoMonorepo build orchestration (installed via pnpm, no global install needed)Included in devDependencies

Docker is only required if you need to work on the WordPress integration. The frontend apps (web, docs, cms) run without Docker. If you only need the docs site or the main frontend, skip Docker and use pnpm dev directly.

Verify your setup:

bash
node -v # v20.x or higher
pnpm -v # 9.x or higher
git -v # git version 2.30+
docker -v # Docker version 24+ (optional)
4 lines of bash code

Setup

1

Clone the repository

bash
git clone https://github.com/itu-codeworkshop/itu-monorepo.git
cd itu-monorepo
2 lines of bash code
2

Install dependencies

pnpm reads the workspace configuration and links all internal packages automatically.

bash
pnpm install
1 line of bash code

The preinstall script enforces pnpm — if you accidentally run npm install or yarn, it will fail with a helpful message.

3

Start the dev servers

bash
pnpm dev
1 line of bash code

This starts all apps concurrently via Turborepo. Each app binds to its own port:

AppPortURL
apps/web3000http://localhost:3000
apps/cms3001http://localhost:3001
apps/docs3002http://localhost:3002
apps/gateway4000http://localhost:4000
4

Start WordPress (optional)

If you need the WordPress environment for content editing or plugin development:

bash
pnpm dev:wp
1 line of bash code

This runs docker compose up with WordPress (port 8080), MariaDB, and phpMyAdmin (port 8081). The ITU theme is mounted from apps/wp-theme/.

To run everything together (all apps + WordPress):

bash
pnpm dev:all
1 line of bash code
ServicePortURL
WordPress8080http://localhost:8080
phpMyAdmin8081http://localhost:8081
MariaDB3306Internal only

Available Scripts

These are the main scripts available at the monorepo root. All turbo commands run across every workspace in the correct dependency order.

ScriptCommandDescription
pnpm devturbo devStart all app dev servers concurrently with hot reload
pnpm dev:wpdocker compose upStart the WordPress + MariaDB + phpMyAdmin Docker stack
pnpm dev:allconcurrently dev + dev:wpStart everything — all apps and the WordPress stack together
pnpm buildturbo buildProduction build of all apps and packages (tsup + Next.js)
pnpm lintturbo lintRun ESLint across all workspaces
pnpm type-checkturbo type-checkRun TypeScript type checking (tsc --noEmit) across all workspaces
pnpm testturbo testRun tests across all workspaces
pnpm ai:syncnode scripts/ai-sync.mjsSync AI skills from .ai/ sources to provider outputs (.claude/, .cursor/, .codex/)
pnpm ui:addshadcn@latest addAdd a shadcn/ui component to @itu/ui
pnpm docs-ui:addshadcn@latest addAdd a shadcn/ui component to @itu/docs-ui

Package-level scripts

Each app and package also has its own scripts. Some notable ones:

PackageScriptDescription
@itu/uipnpm buildBundles with tsup, then extracts props JSON and variant JSON
@itu/uipnpm a11y --allRun axe-core accessibility audit on all components
@itu/uipnpm a11y buttonRun a11y audit on a specific component
@itu/docspnpm prebuildBridge concepts docs + generate sidebar navigation
@itu/docspnpm postbuildIndex all pages with Pagefind for static search

What's next?

Explore the Repository Structure to understand how the code is organised, or jump straight to the Design System to see the visual foundations.