DevOps Architecture

CI/CD, hosting, and environment management for the Plantfolio monorepo.

Continuous Integration

GitHub Actions run on push to main and develop. The primary workflow is .github/workflows/vitest-tests.yml:

  • Checkout, pnpm 10.30.3, Node 24
  • pnpm test:run — runs unit and integration tests across the monorepo
  • PostgreSQL connection secret required for change-stream-worker integration tests
  • Test results uploaded as artifacts on failure

Hosting

  • Vercel— apps/web (marketing), apps/dashboard (product). Next.js apps deploy via Vercel's git integration.
  • Railway — change-stream-worker, render-worker. Long-running Node/Express services.

Environment Management

Environment variables are managed centrally and synced across apps and packages:

  • pnpm env:pull — Pulls env from Vercel to dashboard and web .env files
  • pnpm env:sync — Syncs env from dashboard to packages, change-stream-worker, and render-worker
  • Each app/package validates environment variables with a type-safe schema
  • Build cache invalidation tied to relevant environment variables

Database Migrations

Prisma migrations live in the db package:

  • packages/db/postgres — Main schema, prisma migrate
  • packages/db/plants — Plants schema (separate database)
  • Scripts like enable-database-notifications.sql for PostgreSQL LISTEN/NOTIFY triggers (change-stream-worker)

Build & Run

  • Node 24, pnpm 10.30.3 (from root package.json)
  • pnpm dev — Turbo runs dev for all configured apps
  • pnpm build — Full monorepo build with dependency ordering
  • pnpm lint — Biome linting across workspace

← Back to overview