Skip to content
personal project· completedProject 05 / 10

Enterprise Feature Kit

Reusable modular monolith feature kit — Clean Architecture backend with dual-database support (MongoDB/PostgreSQL), RBAC, approvals, notifications, products, org management, OpenAPI, and in-app docs.

  • Node.js
  • Express 5
  • TypeScript
  • Zod
  • MongoDB
  • PostgreSQL
  • JWT
  • pino
  • OpenAPI
  • React 19
  • Vite

01

Problem

Starting new MERN projects required rebuilding auth, RBAC, approvals, and org management from scratch every time.

02

Solution

Built a reference modular monolith with 8+ documented backend modules, dual-DB switching, Swagger/OpenAPI, in-app docs browser, and log viewer — serving as a reusable foundation for new products.

03

Architecture

Express 5 + TypeScript backend with Zod validation, Mongoose + pg dual-database support, pino logging, marked docs renderer. React 19 + Vite frontend scaffold.

04

Business impact

Accelerates new product bootstrapping with production-ready enterprise modules and documented architecture patterns.

Decisions

Technical decisions

  1. 01Clean Architecture with feature module isolation
  2. 02Zod for runtime validation at API boundaries
  3. 03Dual-DB repository pattern for MongoDB/PostgreSQL flexibility

Features

Feature breakdown

  • RBAC
  • Approval Workflows
  • Notifications
  • Organizations
  • Products Catalog
  • Dual-DB Support
  • OpenAPI
  • In-app Docs

Responsibilities

  • Designed modular monolith with Clean Architecture layers per feature
  • Implemented users, auth, permissions/RBAC, organizations, approvals, products, notifications modules
  • Built dual-database switching, DB sync/export scripts, and OpenAPI documentation
  • Created in-app docs browser and log viewer endpoints

Challenges

  • Designing dual-database abstraction that works cleanly with both Mongoose and pg
  • Keeping module boundaries strict while sharing auth and notification kernel

Performance considerations

  • pino structured logging for production observability
  • Connection pooling for PostgreSQL module

Lessons learned

  • OpenAPI + in-app docs reduce onboarding time for new developers on the kit
  • Dual-DB support teaches valuable abstraction patterns even when one DB suffices