# Checkpoint ## Major Tasks Completed 1. Docker deployment scaffolded for all 6 apps in the monorepo. 2. Split API images into app-specific Dockerfiles: - `apps/edr-freight-api/Dockerfile` - `apps/edr-passenger-api/Dockerfile` 3. Kept shared Vite/nginx image: - `infrastructure/docker/Dockerfile.web` - `infrastructure/nginx/spa.conf` 4. Updated `docker-compose.yaml` to run all 6 services (apps only, no Postgres service in compose). 5. Added/updated deployment scripts: - `scripts/deploy/create-npmrc.sh` - `scripts/deploy/sync-env-from-server.sh` 6. Added self-hosted GitHub Actions deployment workflow: - Consolidated into one file: `.github/workflows/deploy.yml` 7. Deployment workflow now: - uses a single checkout (`prepare` job), - deploys services via parallel matrix, - sets compose project names per branch/environment, - passes explicit `docker compose --project-name`. 8. Environment sync script now: - supports branch slug paths, - validates each service env file exists, - requires `PORT` in each env file, - exports per-service port vars to `GITHUB_ENV`. 9. `docker-compose.yaml` now reads per-service ports via variables exported from env sync. 10. Passenger startup flow fixed to run: - `prisma:generate`, - `prisma:migrate`, - `prisma:seed`, before API startup. 11. Passenger seed TypeScript issues fixed in `apps/edr-passenger-api/prisma/seed.ts` so it compiles under strict checks. 12. Added deployment runbook: - `DEPLOYMENT.md` ## Key Files to Review - `.github/workflows/deploy.yml` - `docker-compose.yaml` - `scripts/deploy/sync-env-from-server.sh` - `scripts/deploy/create-npmrc.sh` - `apps/edr-passenger-api/docker-entrypoint.sh` - `apps/edr-passenger-api/prisma/seed.ts` - `DEPLOYMENT.md` ## Next Actions 1. Run full CI on all target branches (`main`, `dev`, `staging`) and verify matrix job behavior. 2. Validate server env directory layout matches script expectations: - `/home//environment/edr///...` 3. Confirm each service env file includes valid `PORT` and service-specific runtime vars. 4. Verify branch-specific compose project names produce isolated containers/networks/volumes on runner. 5. Smoke test all 6 deployed services behind real environment URLs. ## Open Risks / Notes 1. Passenger seed runs on every container start; confirm this is desired for production-like environments. 2. Prisma warns about `package.json#prisma` deprecation (Prisma 7 migration pending). 3. Matrix parallelism increases runner load; ensure self-hosted runner capacity is sufficient. 4. Port collisions are prevented by env-driven mapping, but bad env values can still cause runtime conflicts.