Skip to content

Build & Verify

Every code change must pass the standard pipeline before it is committed. Each stage only runs if the previous one succeeded.

Terminal window
# pnpm (PowerShell: use ';' instead of '&&')
pnpm typecheck; if ($?) { pnpm lint }; if ($?) { pnpm test }; if ($?) { pnpm build }
Stage Command Must pass
Typecheck pnpm typecheck 0 errors (strict mode)
Lint pnpm lint clean
Unit tests pnpm test all green (API: Jest, Web: Vitest)
Build pnpm build all packages compile
Change Extra verification
API changes pnpm --filter @flowgeist-tool/api test:e2e
Web changes pnpm e2e (Playwright)
Docker / YAML docker compose -f docker/docker-compose.prod.yml config --quiet
Shell scripts wsl bash -n <script> (syntax check)

The GitHub CI runs the same pipeline plus additional gates — a change is not considered done until it passes locally and in CI:

  • Lint & Typecheck
  • Unit & Integration Tests
  • E2E API Tests + E2E UI Tests
  • Docker Build Smoke Test
  • Security: CodeQL, Semgrep, Trivy, SBOM & Security Audit
  • OWASP ZAP baseline scan (DAST, weekly + on demand)