ProductionIntermediate5h

CI/CD for full-stack.

Test, build, and deploy both halves on every push.

What is CI/CD for full-stack?

A pipeline that, on every push, installs, lints, type-checks, tests, and builds both the client and server, then deploys when everything passes. For a full-stack app the pipeline has to handle both halves, the shared code, and the database migrations as one coordinated flow.

Why it matters

Manual full-stack deploys are error-prone — forget a migration, skip a test, ship a type error across the seam. A pipeline makes every change go through the same checks and the same deploy path, so releases become routine and safe. It is the backbone of shipping continuously without fear.

What to learn

  • Pipeline stages for a full-stack app
  • Type-checking across client, server, and shared code
  • Running unit and E2E tests in CI
  • Building both halves
  • Running migrations in the deploy step
  • Caching to keep the pipeline fast
  • Required checks before merge and deploy on merge

Common pitfall

A pipeline that builds and deploys but skips type-checking the shared code across the seam, so a type mismatch between client and server slips to production. The whole point of end-to-end types is lost if CI does not run tsc across all of it. Make a full type-check a required check before any deploy.

Resources

Primary (free):

Practice

Build a CI pipeline that, on every push, type-checks the whole project, runs unit and one E2E test, and builds both halves — as required checks before merge. Add a deploy job on merge to main that runs migrations. Done when a type error across the seam blocks the merge.

Outcomes

  • Build a pipeline covering both halves and shared code.
  • Type-check across the seam as a required check.
  • Run unit and E2E tests in CI.
  • Deploy on merge with migrations included.
Back to Full-Stack roadmap