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 filespnpm 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 migratepackages/db/plants— Plants schema (separate database)- Scripts like
enable-database-notifications.sqlfor 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 appspnpm build— Full monorepo build with dependency orderingpnpm lint— Biome linting across workspace