We Split Our Turborepo Apps by HIPAA Exposure, Not by Team Ownership
Most monorepo app-splitting advice centers on team ownership or deploy cadence. For Pulza, the deciding factor was different: which apps might touch protected health information (PHI), and which provably never do.
The structure
Pulza is a Turborepo + pnpm workspace monorepo. apps/web, apps/portal, and apps/marketing are Next.js 15 apps on Vercel. apps/workers is a separate Node/TS service running background jobs (via pg-boss over Postgres) on Railway. Database access goes through Drizzle ORM, with packages/db as the single schema source of truth. Auth is Supabase Auth plus Row-Level Security.
Why workers live on a different platform entirely






