A fully-structured, scalable, and production-ready backend template built with Express.js, Mongoose, and MongoDB, designed to get your REST API up and running in no time – whether it's for a side project, production system, or an npm package starter kit.
- ✅ Express.js based routing and middleware setup
- ✅ MongoDB connection with Mongoose (with transactions support)
- ✅ Cloudinary file upload (production ready)
- ✅ Async handler utility to reduce try/catch boilerplate
- ✅ Centralized error and response handler classes
- ✅ Auto JSON response format
- ✅ Multer-based file upload system
- ✅ Rate Limiting and security middlewares (
helmet
,hpp
,xss-clean
) - ✅ Centralized environment config
- ✅ Built-in support for logging and debugging
- ✅ Pagination, filtering, metadata-ready
- ✅ Prettier and lint-friendly
- ✅ Ready to publish as an npm starter
src/
├── app.js # Main Express config
├── index.js # Entry point
├── config/ # Env + constants
├── db/ # MongoDB connection
├── middlewares/ # Rate limiters, errors, etc.
├── utils/ # Async handler, response wrapper, etc.
├── routes/ # All routes (modular)
├── controllers/ # Route logic
├── models/ # Mongoose models
├── uploads/ # Multer temp files
├── public/ # Static assets
├── Documentation/ # docs for all the listed things
└── bin/cli.js # NPM starter entry (optional)
PORT=8080
MONGO_URI=mongodb+srv://your-cluster-url
CORS_ORIGIN=http://localhost:3000
ACCESS_TOKEN_SECRET=your-access-secret
ACCESS_TOKEN_EXPIRY=1d
REFRESH_TOKEN_SECRET=your-refresh-secret
REFRESH_TOKEN_EXPIRY=30d
CLOUDINARY_CLOUD_NAME=your-cloud-name
CLOUDINARY_API_KEY=your-api-key
CLOUDINARY_API_SECRET=your-secret
Script | Command | Description |
---|---|---|
dev |
npm run dev |
Start server in development (nodemon) |
start |
node src/index.js |
Start server in production |
lint |
prettier --check . |
Check formatting |
format |
prettier --write . |
Auto-format code |
npm install
npm run dev
To use as a CLI tool for bootstrapping projects:
npm link
create-mk-backend new my-project
Or publish to NPM with your CLI tool defined in bin/cli.js
.
Feel free to fork this repo, suggest improvements, or contribute new utilities.
Licensed under the ISC License.
© 2024 Manoj Kumar Rajpoot