stack-profile:modular-monolith
Modular Monolith (TypeScript, NestJS, Prisma, PostgreSQL, BullMQ, Docker) overview
A TypeScript monolith deliberately structured into independent modules with explicit boundaries, combining the deployment simplicity of a monolith with the organizational clarity of microservices. Each NestJS module owns its Prisma schema slice and communicates with others only through published events or well-defined service interfaces. BullMQ handles async work within module boundaries, and Redis backs both the job queue and cross-module event bus. PostgreSQL schemas enforce data ownership per module. Docker Compose runs the complete system locally. The tradeoff is the constant vigilance needed to prevent module boundaries from eroding, but when maintained, this pattern avoids distributed-system complexity while preserving the option to extract modules later.
Attributes
Outgoing edges
- domain:software-engineering·DomainSoftware Engineering
- domain:backend·DomainBackend
- language:typescript·LanguageTypeScript
- framework:nestjs·FrameworkNestJS
- library:prisma·LibraryPrisma
- library:bullmq·LibraryBullMQ
- library:ioredis·Libraryioredis
- library:express·LibraryExpress
- tool:docker·ToolDocker
- tool:docker-compose·ToolDocker Compose
- language:sql·LanguageSQL
- tool:vitest·ToolVitest
- workflow:architecture-decision·WorkflowArchitecture Decision
- workflow:monolith-extraction-planning·WorkflowMonolith Extraction Planning
- skill-area:monolith-vs-microservices·SkillAreaMonolith vs Microservices Tradeoffs
- skill-area:domain-driven-design·SkillAreaDomain-Driven Design
- skill-area:messaging-queuing·SkillAreaMessaging and Queuing
- skill-area:backend-api-design·SkillAreaBackend API Design
- skill-area:schema-evolution·SkillAreaSchema Evolution
- role:backend-engineer·RoleBackend Engineer
- role:architect·RoleArchitect
- role:tech-lead·RoleTech Lead