@bodhi/crud-api-generator
A powerful CLI tool that generates Express.js REST APIs or GraphQL endpoints from a simple JSON schema.
Features
- 🚀 Instant API generation from JSON schema
- 💾 Support for MongoDB, PostgreSQL, and Firebase
- 🔄 Auto-generated CRUD operations
- 📚 Swagger documentation generation
- âš¡ GraphQL support
- 🎯 Clean and maintainable code generation
Installation
npm install -g @bodhi/crud-api-generator
Usage
- Create a JSON schema file (e.g.,
schema.json
):
{
"name": "User",
"fields": {
"name": {
"type": "String",
"required": true
},
"email": {
"type": "String",
"required": true,
"unique": true
},
"age": {
"type": "Number"
}
}
}
- Generate the API:
bodhi-crud generate -s schema.json -d mongodb -t rest
Options:
-s, --schema
: Path to JSON schema file (required)
-d, --database
: Database type (mongodb, postgres, firebase) (default: mongodb)
-t, --type
: API type (rest, graphql) (default: rest)
-o, --output
: Output directory (default: ./generated)
Generated Structure
The tool will generate the following files:
generated/
├── models/
│ └── user.model.js
├── controllers/
│ └── user.controller.js
├── routes/
│ └── user.routes.js
└── swagger.json
Database Support
MongoDB
- Uses Mongoose for schema definition and validation
- Generates complete CRUD operations
- Includes pagination and filtering
PostgreSQL (Coming Soon)
- Sequelize ORM integration
- Migration generation
- Complex queries support
Firebase (Coming Soon)
- Firestore integration
- Real-time updates
- Security rules generation
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
📦 rest-api
┣ 📂 src
┃ ┣ 📂 config
┃ ┃ ┣ 📄 index.js # Central configuration
┃ ┃ ┗ 📄 swagger.js # Swagger/OpenAPI configuration
┃ ┣ 📂 controllers
┃ ┃ ┣ 📂 auth
┃ ┃ ┃ ┗ 📄 auth.controller.js # Authentication controller
┃ ┃ ┗ 📂 user
┃ ┃ ┗ 📄 user.controller.js # User management controller
┃ ┣ 📂 middleware
┃ ┃ ┣ 📄 error.middleware.js # Global error handler
┃ ┃ ┗ 📂 validation
┃ ┃ ┣ 📄 auth.middleware.js # JWT authentication
┃ ┃ ┣ 📄 auth.validation.js # Auth input validation
┃ ┃ ┣ 📄 role.middleware.js # Role-based access control
┃ ┃ ┗ 📄 user.validation.js # User input validation
┃ ┣ 📂 models
┃ ┃ ┗ 📄 user.model.js # User model schema
┃ ┣ 📂 routes
┃ ┃ ┣ 📂 auth
┃ ┃ ┃ ┗ 📄 auth.routes.js # Auth routes
┃ ┃ ┗ 📂 user
┃ ┃ ┗ 📄 user.routes.js # User routes
┃ ┣ 📂 utils
┃ ┃ ┣ 📄 db.util.js # Database utilities
┃ ┃ ┣ 📄 error.util.js # Error classes
┃ ┃ ┣ 📄 logger.util.js # Logging utility
┃ ┃ ┗ 📄 response.util.js # Response formatter
┃ ┗ 📄 index.js # Application entry point
┣ 📂 logs # Log files directory
┣ 📄 .env.example # Environment variables example
┣ 📄 .gitignore # Git ignore file
┣ 📄 package.json # Project dependencies
┗ 📄 README.md # Project documentation