Local environment
Application
- Node — align with CI (the repo’s workflow uses modern Node).
- PostgreSQL — local Docker Compose is typical; run
npm run db:migrateafter the database is up.
npm ci
npm run db:migrate
npm run devOn Windows, Docker health/wait scripts vary—often you start Postgres (docker compose up -d postgres), migrate, then run the dev server. For local email-free OTP, teams sometimes enable console email modes only in development; production builds should use a real mail provider.
If Postgres credentials change after a volume was initialized, you may need to reset the data volume so the cluster matches your compose file.
Documentation site (Hugo)
From site/:
hugo mod tidy
hugo server -DProduction build:
hugo --gc --minifyOutput goes to site/public/ (ignored for version control—do not commit build output).
Schema changes
Database DDL must stay consistent between scripts/db-migrate.js and server/utils/state-store.ts initialization per project policy.