Nest framework TypeScript starter repository. A progressive Node.js framework for building efficient and scalable server-side applications.
Este microservice baseplate pretende hacer de estructura de partida para apis rest (como en los boilerplate) para ahorrar código repetitivo y esencial en la implementación de un backend, además de estar pensdo para proyectos de uso didácticos o personales. Incluye una conexión a un base de datos de Mongo Atlas, y servicio de autenticación por jwt.
Como requisito previo para levantar la imagen de producción es necesario tener instalado docker
y docker compose
en el servidor donde se ha decidido clonar el repositorio. Como alternativa se ofrece la posibilidad de instalar las dependencias de node en el propio directorio sin montar ningún contenedor, aunque es más recomendable la primera opción.
Para que funcione la consexión a su base de datos de mongo atlas, se debe crear un fichero .env
en la raíz y definir las variables de entorno para USERNAME
, PASSWORD
por las correspondientes credenciales que tengan permisos para el acceso a su base de datos, así como actulizar la parte del url
de la cadena de conexión ubicada en el fichero /src/database/mongo/mongo.module.ts
Comandos para arrancar el servicio:
$ npm install
$ npm run start # development
$ npm run start:dev # watch mode
$ npm run start:prod # production mode
$ npm run image # levantar contenedor de prod en docker
Módulo principal de la api donde se unen el resto de módulos para ser importados en conjuntos en la función bootstrap()
, que se encuentra en el fichero principal main.ts
. Con la ayuda de la clase core NestFactory que nos proporciona nestjs
se crea la instancia de la app, a la que luego se le ordena la escucha del puerto designado.
En este punto se conecta la conexión a la base de datos establecida por MongooseModule.forRoot(...)
y exportado como MongoModule
. Además, como el resto de módulos, tiene incluido el servicio correspondiente, en este caso, con una única función que devuelve un json con la descripción de la api y su versión que será invocada tras una petición GET a la ruta principal /
public async appInfo() {
return {
"name": "API Rest Full",
"framework": "Nestjs",
"version": "8.0.0"
};
}
(en proceso)
(en proceso)
@Schema({ versionKey: '_vk' })
export class User {
@Prop({unique:true}) user: string;
@Prop({unique:true}) email: string;
@Prop() passwd: string;
}
$ npm run test # unit tests
$ npm run test:e2e # e2e tests
$ npm run test:cov # test coverage
Nest is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.
- Author - Diego Vázquez Campos
- Twitter - @dkaerit
Nest is MIT licensed.