Skip to main content
This guide takes you from a fresh clone to all three apps running locally. Every external integration is a guarded extension point — with a key absent it no-ops and logs, so the project builds and runs with zero secrets.
Prefer the big picture first? Skim Architecture and the Tech Stack, then come back here to run it.

Prerequisites

Setup

1

Install dependencies

This installs every workspace: apps/web, apps/cms, docs, and the shared packages/*.
2

Create your environment files

Copy the templates and fill in whatever keys you have.
While keys are incomplete, keep SKIP_ENV_VALIDATION=1 in apps/web/.env.local to bypass build-time env validation. See Environment Variables for the full canonical list.
3

Run the app you need

4

Verify the quality gates

All of these pass with no environment keys configured.

Repository layout

apps
packages
db — Drizzle schema + Neon client + queries
business — pure business logic (no I/O)
types — shared Zod schemas + TS types
errors — AppError + error-code registry
logger — structured JSON logger
docs
Next up: read Conventions for the coding standards every change is expected to follow, then the Git Workflow for how branches flow dev → test → pprd → prod.
Last modified on August 29, 2026