Files
edr-platform/checkpoint.md

2.7 KiB

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/<deploy_user>/environment/edr/<branch-slug>/<project>/...
  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.