ddd-backend-cli
v1.1.0
Published
CLI para generar proyectos backend con DDD demanera rápida y sencilla
Maintainers
Readme
CLI para generar proyectos backend siguiendo la arquitectura Domain-Driven Design (DDD) de forma rápida, estructurada y productiva usando Node.js + Express + TypeScript.
Video explicativo
👇 Haz clic en la imagen para ver la explicación completa del CLI en YouTube: 👇
Caracteristicas
- Generación automática de estructura DDD
- Generación automática de CRUD completo
- Arquitectura por capas (Domain / Application / Infrastructure / WebApi)
- Generación automática de:
- Controllers
- Services
- Repositories
- DTOs
- Routes
- OpenAPI Docs
- Soporte para base de datos SQL
- Configuración automática para Turso
- Código listo para producción
- Escalable y mantenible
Instalación
Instalar globalmente:
#instalar paquete en el dispositivo de forma global
npm install -g ddd-backend-cli
#o usar con npx
npx ddd-backend-cliUso
El paquete cuenta con diferentes comandos , cada uno con un objetivo especifico, los detalles a continuación:
Este primer comando nos generará un proyecto básico de nodejs con express
#nos situamos en el escritorio o en la zona donde desees crear tu proyecto backend
#puedes cambiar el nombre de my-project-name por el nombre de tu preferencia
ddd-backend-cli init my-project-nameUna vez generado el proyecto base , navegamos dentro de la carpeta que nos ha creado con el comando:
#si has usado un nombre diferente a my-project-name
#asegurate de escribir ese nombre en lugar de my-project-name
cd my-project-name
#ejecutar el siguiente comando para asegurarnos que
#todo esta funcionando bien
npm run devAhora podemos generar la estructura y modelos de entidades a usar con un solo comando:
ddd-backend-cli generate-model <NombreModelo> <propiedad:tipo> <propiedad:tipo> ...Tipos de datos soportados:
string
number
boolean
DateEjemplo real del comando generate-model:
ddd-backend-cli generate-model es la base del comando que no debe cambiar
<NombreModelo> es el nombre que le darás a tu modelo en el sistema
<propiedad:tipo> propiedad es el nombre que le dás a esa propiedad ejemplo username y tipo es el tipo de dato que es la propiedad ejemplo string, este fragmento lo puedes repetir las veces que desees ya que probablemente tu modelo pueda tener de una propiedad a más, solo debes repetir este fragmento las veces que creas necesarias.
Esto generara automáticamente :
- Entity
- Repository interface
- Repository implementation
- Service
- Controller
- Routes
- DTOs
- OpenAPI schema
código ejemplo con varias propiedades:
ddd-backend-cli generate-model User username:string email:string age:numbercódigo ejemplo con solo una propiedad:
ddd-backend-cli generate-model Categoria description:stringPara seguir generando más modelos sobre el mismo proyecto solo debes repetir el comando con cada modelo
ddd-backend-cli generate-model <NombreModelo> <propiedad:tipo> <propiedad:tipo> ...Configurar Base de Datos
El CLI puede configurar automáticamente la infraestructura SQL, es necesario contar con la variable de entorno .env la cual se explica más adelante.
Por el momento solo hay soporte para Turso(SQL) y se enecuentran en proceso: sqlite y mysql
Configurar Turso automaticamente database:
El siguiente comando se encargará de crear la inicialización de la base de datos, la conexion SQL , creación automatica de las tablas en función de los modelos proporcionados, registro automatico en el archivo principal, y tipado de SQL correcto.
#ejecutar el comando dentro del proyecto
ddd-backend-cli database tursoVariables de entorno necesarias .env
Para que la conexión con la base de datos funcione correctamente debes crear en la base del proyecto al mismo nivel que esta el package.json el archivo que contiene las variables de entorno .env dentro este archivo debe tener los siguientes datos
TURSO_DB_URL="tu_url_de_base_de_datos"
TURSO_DB_AUTH_TOKEN="tu_token_de_conexion"Estructura del proyecto generado
├───.ddd
├───Application
│ ├───dtos
│ ├───interfaces
│ └───services
├───Domain
│ ├───entities
│ └───repositories
├───Infrastructure
│ ├───builders
│ ├───database
│ ├───interface
│ ├───repositories
│ ├───services
│ └───utils
├───shared
│ └───utils
└───WebApi
├───container
├───controllers
├───docs
│ ├───paths
│ └───schemas
└───routes
