CI/CD
Platform
Section titled “Platform”CI runs on GitLab CI with a multi-file include: layout:
.gitlab-ci.yml # orchestrator: stages, cache, defaults.gitlab/ci/ prepare.yml format.yml lint.yml typecheck-*.yml test-*.yml build-*.yml deploy-*.ymlPipeline stages
Section titled “Pipeline stages”prepare → lint → typecheck → test → buildDuring the scaffold phase, deploy jobs are disabled in .gitlab-ci.yml. Job files under .gitlab/ci/deploy-*.yml are kept for later — uncomment the includes when Cloudflare CI variables are configured.
| Stage | Jobs |
|---|---|
| prepare | pnpm install --frozen-lockfile with pnpm store cache |
| lint | pnpm format:check, pnpm lint:check |
| typecheck | Per-app tsgo --noEmit / astro check for docs |
| test | Vitest smoke tests (web, api) + Playwright e2e |
| build | Vite web build, Storybook static, Astro docs |
| deploy | Disabled until Cloudflare setup |
Merge requests
Section titled “Merge requests”All lint, typecheck, test, and build jobs should pass before merge.
GitLab cache keys on pnpm-lock.yaml. Store path: .pnpm-store/ inside the project directory.
Runner notes
Section titled “Runner notes”Toptal GitLab shared runners are enabled for this repository. Jobs use node:24-alpine with corepack enable and the pinned pnpm version from packageManager. Use .nvmrc locally to match the CI Node version.
See Deployment for required Cloudflare CI variables.