Maintaining multiple decoupled repositories for a full-stack platform frequently leads to dependency drift, out-of-sync API interfaces, and fractured deployment scripts. For Curved Lab, our platform encompasses three dedicated frontends—the public marketing portal, the creator campaign dashboard, and the administrative console—backed by a high-throughput Node.js Express REST API.
Rather than maintaining four separate repositories with duplicated UI components and manually synchronized TypeScript interfaces, we consolidated the entire ecosystem into a high-performance npm workspaces monorepo. Here is how we structured the dependency graph, eliminated circular references, and streamlined development.
Monorepo Package Topology
A successful monorepo hinges on clean layer separation. Leaf packages (UI components, utility libraries, shared types) must never import from host applications. Host applications depend on shared packages, while shared packages remain completely agnostic of consumer runtime environments.
