Full-StackFeb 28, 202615 min read

Designing the Bonjegs monorepo

Three React apps, one Node API, shared types — how the Bonjegs monorepo is structured and why npm workspaces was enough.

Jhastine MacalinoWordPress · Front-End · Technical SEO · Pampanga, PH

Bonjegs has three independently deployable React + Vite apps (customer, admin, rider) and one shared Node + Express + Prisma backend. They share types, a few utility packages, and almost nothing else. Each app deploys on its own schedule.

I used npm workspaces. Not Turborepo, not Nx, not pnpm — just plain workspaces. The reason: the team is small (currently me), the toolchain churn cost of the heavier monorepo tools was not worth the marginal speed.

What lives where

The discipline: nothing in packages/ imports from apps/. Ever. That single rule keeps the dependency graph clean.

— Read next

Real-time rider tracking with Socket.IO + Redis