exp-gen is a lightning-fast, interactive CLI tool designed to scaffold Express.js API projects in seconds. Whether you prefer TypeScript or JavaScript, exp-gen sets up your directory structure, configuration, and database boilerplate so you can start coding immediately.
To use the generator anywhere on your system, install it globally via npm:
npm install -g @madhusha_99/exp-genOnce installed, you can initialize a new project using any of the following commands:
exp
# OR
gen
# OR
express-draftRun exp in your terminal. The interactive CLI (powered by @clack/prompts) will guide you through the setup:
- Project Name: Enter your project folder name (e.g.,
my-api). - Language: Choose between TypeScript (Recommended) or JavaScript.
- Database: Select your preferred database.
- Currently Supported: MongoDB (via Mongoose).
- Coming Soon: MySQL, PostgreSQL (Prisma), and SQLite.
- Install Dependencies: Choose
Yesto let the CLI runnpm installfor you automatically.
After the scaffolding is complete, follow the on-screen instructions:
cd <your-project-name>
npm run devexp-gen scaffolds a professional Layered Architecture, ensuring your code remains scalable and maintainable as it grows:
configs/: Environment variables and database connection logic.controllers/: Bridges the routes and the business logic; handles requests/responses.dtos/: Data Transfer Objects for validating and shaping incoming data.interfaces/: TypeScript interfaces and types for strict type safety.middlewares/: Custom Express middlewares (Auth, Error handling, Logging).models/: Database schemas (e.g., Mongoose/MongoDB models).repositories/: The data access layer; handles direct database operations.routes/: API endpoint definitions and mapping to controllers.services/: Core Business Logic layer; where the heavy lifting happens.utils/: Shared helper functions and utility classes.app.ts: The application entry point.
We love open source! exp-gen is a community-driven project, and we welcome contributions to make it better.
- Add Database Templates: We are looking for contributors to help build out the
MySQL,PostgreSQL, andSQLitetemplates in thesrc/templatesfolder. - Report Bugs: Found a glitch? Open an issue.
- Feature Requests: Have an idea for a new feature? Let us know!
If you want to work on the CLI itself:
- Clone the repo:
git clone https://github.com/Open-Core-Lab/exp-gen.git - Install dependencies:
npm install - Make your changes and submit a Pull Request!
This project is licensed under the MIT License.
Happy coding! 🚀 Maintained by Madhusha Prasad
