Microservices project with Node.js, Express, Mongoose, Redis, and GraphQL
npm install micro-generatemicro-generate)micro-generate es un CLI potente y ligero para crear microservicios listos para producciĂłn con Node.js, TypeScript, GraphQL (Apollo Server), MongoDB, MySQL (Sequelize) y Redis.
OlvĂdate del boilerplate. Genera infraestructuras completas, features modulares, queries y mutaciones en segundos con una arquitectura escalable y las mejores prácticas integradas.
---
No necesitas instalarlo globalmente. Recomendamos usar npx para ejecutar siempre la Ăşltima versiĂłn:
``bash`
npx micro-generate
---
`bash`
npx micro-generate initusers
* Interactivo: Te preguntará el nombre del proyecto y qué tecnologias habilitar:
* MongoDB: Soporte nativo con Mongoose.
* Multi-DB: Posibilidad de añadir múltiples bases de datos MongoDB (ej: , logs).src/core
* MySQL: Soporte completo con Sequelize.
* Multi-DB MySQL: Posibilidad de añadir múltiples bases de datos MySQL.
* Redis: Cliente para caching y pub/sub.
* Resultado: Un proyecto completo con , src/config, src/db y todo listo para correr npm run dev.
`bash`
npx micro-generate featureusers
* Te pedirá: Nombre del feature (ej: , orders).users
* TecnologĂas: Puedes seleccionar si la feature usa MongoDB, MySQL o Redis.
* Multi-DB: Si tienes mĂşltiples bases de datos:
* MongoDB: Te preguntará a cuál colección conectar (ej: ).archive
* MySQL: Te preguntará por separado a cuál base de datos conectar (ej: ).0
* Redis: Te preguntará a qué número de base de datos conectar (defecto ).src/features/
* Genera: Carpeta en con:typeDefs.ts
* : Esquemas GraphQL.resolvers.ts
* : Controladores.service.ts
* : LĂłgica de negocio (con inyecciĂłn del modelo correcto).model.ts
* : Modelo Mongoose o Sequelize (segĂşn selecciĂłn).index.ts
* Automático: Registra la feature en el principal.
`bash`
npx micro-generate querytypeDefs
* Flujo: Seleccionas la feature de una lista -> Escribes el nombre -> Defines el tipo de retorno.
* Magia: Inyecta automáticamente la definición en y el esqueleto de la función en resolvers.
`bash`
npx micro-generate mutationquery
* Similar a , ideal para operaciones de creaciĂłn, actualizaciĂłn o eliminaciĂłn (CRUD).
#### init (Inicializar Proyecto)-n, --name
| Flag | DescripciĂłn | Ejemplo |
|------|-------------|---------|
| | Nombre del proyecto | -n my-api |--mongo
| / --no-mongo | Habilita/Deshabilita MongoDB | --no-mongo |--mysql
| / --no-mysql | Habilita/Deshabilita MySQL | --mysql |--redis
| / --no-redis | Habilita/Deshabilita Redis | --redis |--mongo-dbs
| | DBs adicionales Mongo (separadas por coma)| --mongo-dbs "logs,users" |--mysql-dbs
| | DBs adicionales MySQL (separadas por coma)| --mysql-dbs "archive,stats" |
#### feature (Crear Feature)-n, --name
| Flag | DescripciĂłn | Ejemplo |
|------|-------------|---------|
| | Nombre de la feature | -n orders |--mongo
| / --no-mongo | Habilita/Deshabilita MongoDB | --mongo |--mysql
| / --no-mysql | Habilita/Deshabilita MySQL | --mysql |--redis
| / --no-redis | Habilita/Deshabilita Redis | --redis |--db-connection
| | Nombre de la conexiĂłn Mongo (Multi-DB) | --db-connection logs |--mysql-connection
| | Nombre de la conexiĂłn MySQL (Multi-DB) | --mysql-connection main |--redis-db
| | NĂşmero de base de datos Redis (0-15) | --redis-db 1 |
#### query y mutation-f, --feature
| Flag | DescripciĂłn | Ejemplo |
|------|-------------|---------|
| | Feature objetivo | -f users |-n, --name
| | Nombre de la query/mutation | -n getUser |-r, --return-type
| | Tipo de retorno GraphQL | -r UserResponse |
Ejemplos:
`bashCrear feature con MySQL y Redis conectada a DB 'logs'
npx micro-generate feature --name "notifications" --mysql --redis --mysql-connection "logs"
---
đź§ IA & Agent Ready
Cada proyecto generado incluye automáticamente una Skill de Antigravity en .agent/skills/micro-generate.
Esto permite que agentes de IA (como Antigravity o Cline) puedan leer las instrucciones y manipular el proyecto por ti usando los comandos del CLI.🔥 CaracterĂsticas Principales
* ⚡ Stack Moderno: Node.js 20+, TypeScript 5, Apollo Server 4.
* đź§ GraphQL Modular: Arquitectura basada en features autotencidos.
* 🛡️ Type-Safety: Validación de variables de entorno con
Zod.
* 🗄️ Bases de Datos:
* MongoDB (Mongoose): Conexiones primarias y secundarias automáticas.
* MySQL (Sequelize): IntegraciĂłn completa ORM con soporte multi-schema/multi-db.
* Redis (ioredis): Patrón Repository incluido con soporte para múltiples bases de datos dinámicas.
* 📝 Logging: Implementación de alto rendimiento con Pino (JSON logs).
* 🛑 Graceful Shutdown: Manejo correcto de señales SIGINT/SIGTERM para evitar conexiones colgadas.
* 🎮 Playground Control: Habilita/deshabilita el Apollo Sandbox vĂa variables de entorno.đź“‚ Estructura Generada
`
my-service/
├── src/
│ ├── config/ # Configuración de entorno y DBs
│ ├── core/ # Servidor central (MicroserviceServer)
│ ├── db/ # Clientes de base de datos
│ │ ├── mongo/ # Cliente y modelos MongoDB
│ │ ├── mysql/ # Cliente y modelos Sequelize
│ │ └── redis/ # Cliente y repositorio Redis
│ ├── features/ # Tu lĂłgica de negocio aquĂ
│ │ ├── users/ # Ejemplo de Feature
│ │ │ ├── typeDefs.ts
│ │ │ ├── resolvers.ts
│ │ │ └── service.ts
│ │ └── index.ts # Auto-registro
│ ├── utils/ # Loggers y helpers
│ └── index.ts # Punto de entrada
├── .env # Variables de entorno
├── package.json
└── tsconfig.json
`🤝 Contribuyendo
1. Haz un Fork.
2. Crea tu rama de feature (
git checkout -b feature/amazing-feature).
3. Commit a tus cambios (git commit -m 'feat: Add amazing feature').
4. Push a la rama (git push origin feature/amazing-feature).
5. Abre un Pull Request.---
Generado con ❤️ por
Jesus Leiva`.