byariel95 / nestjs-starter

Starter for BFF, API Rest and microservice with NestJS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

nestjs-starter

NestJS Starter

Node.js Npm NestJs Last Release GitHub license
GitHub Workflow Status Codecov sonarcloud Snyk

Glosario


📝 Requerimientos básicos

🛠️ Instalar dependencias

Cuando tenemos los requisitos básicos, clonamos el repositorio, vamos a la carpeta del proyecto e instalamos sus dependencias.

 npm install

⚙️ Configuración

Este starter viene con el archivo .env.example y .env.test, el cual contiene las configuraciones básicas para que funcione la aplicación.

Para el entorno de desarrollo local, es necesario contar con un archivo .env del cual se puede utilizar el archivo de ejemplo para generarlo.

# SERVER
PORT=8080
CONTEXT=api
ORIGINS=http://localhost:3000,http://localhost:8080
ALLOWED_HEADERS=Content-Type,Authorization,Set-Cookie,Access-Control-Allow-Origin,Cache-Control,Pragma
ALLOWED_METHODS=GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS
CORS_ENABLED=true
CORS_CREDENTIALS=false

# SWAGGER ENVIRONMENTS
SWAGGER_PATH=docs
SWAGGER_ENABLED=true

# PARAMS
TEST_KEY="testKeyEnv-dev"

# SERVICES
RICK_AND_MORTY_API_URL=https://rickandmortyapi.com/api
💬 Para ver en detalle todas las propiedades de la configuración, hace click acá.

Server

PORT: Es el puerto por el cual va a correr el servidor.

  • Type: Number
  • Default: 8080

CONTEXT: Es el contexto el que se puede acceder a la API del servidor, de esta manera no se exponen los endpoints en la ruta principal de la aplicación. Se escribe sin el / (slash).

  • Type: String
  • Default: api

ORIGINS: Es una whitelist para que la aplicación sólo pueda ser consumida por urls confiables y evitar cualquier tipo de solicitudes no deseadas y maliciosas. Debes escribir las urls separadas por una coma.

  • Type: String
  • Default: http://localhost:3000,http://localhost:8080

ALLOWED_HEADERS: Parámetros que va a recibir por el header en los request.

  • Type: String
  • Default: Content-Type,Authorization,Set-Cookie,Access-Control-Allow-Origin,Cache-Control,Pragma

ALLOWED_METHODS: Métodos http disponibles para el cors

  • Type: String
  • Default: GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS

CORS_ENABLED: Habilita o deshabilita el uso de CORS en el servidor.

  • Type: Boolean
  • Default: false

CORS_CREDENTIALS: Habilita o deshabilita el uso de las credenciales en las peticiones CORS en el servidor.

  • Type: Boolean
  • Default: false

Swagger

SWAGGER_PATH: Define la ruta de la documentación Swagger, se escribe sin el / (slash).

  • Type: String
  • Default: docs

SWAGGER_ENABLED: Habilitar o deshabilitar la documentación Swagger de los endpoints del servidor.

  • Type: Boolean
  • Default: true

Params, Services y Otros enviroments

A modo de ejemplo, se pueden cargar todas las variables de entorno que requieras, es importante seguir con el esquema de key:value para configurarlas.

# PARAMS
TEST_KEY="testKeyEnv-dev"

# SERVICES
RICK_AND_MORTY_API_URL=https://rickandmortyapi.com/api

Este proyecto utiliza el módulo @nestjs/config, el cual centraliza todas las variables de entorno en un solo lugar y te permite consumirlas como typing para evitar errores de typo, como asi también evitar usar el process.env en todo el proyecto, lo que te permite darle soporte más fácil si se requiere cambiar el KEY de la variable de entorno.

También cuenta con un validador de variables de entorno, que nos permite validar el tipo de dato y si es requerido o no dicha variable.

Todos estos features los podemos encontrar en la carpeta ./src/config, en dicha carpeta podemos encontrar el archivo enviroments.ts que es un manejador de env files dependiendo el NODE_ENV que tenga nuestra aplicación.

💻 Scripts

Inicia la aplicación en modo desarrollo

npm run start:dev

Inicia los test con coverage

npm run test

Realiza el build de la aplicación

npm run build

Inicia la aplicación en modo productivo

npm run start

Otros scripts

Formatea el código

npm run format

Eslintea el código

npm run lint

📚 Swagger

El proyecto cuenta con un Swagger (OpenAPI 3.0.0) que tiene documentado los endpoints con sus definiciones. Demo Swagger

Para expandir la documentación, es importante aplicar los decoradores correspondientes a la aplicación. NestJS OpenApi

Esta documentación puede ser activada o desactivada desde la configuración por medio las variables de entorno del proyecto.

SWAGGER_PATH=docs
SWAGGER_ENABLED=true

URL

Acceso a la documentación y testeo de los endpoints: http://localhost:8080/docs

Scheme

<http|https>://<server_url><:port>/<swagger-path>

Exportar el swagger en JSON

Se puede exportar la documentación a un JSON agregando el sufijo -json al path definido. Demo Swagger JSON

  • Default: http://localhost:8080/docs-json
  • Schema: <http|https>://<server_url><:port>/<swagger-path>-json

🧰 Toolkit

Los módulos de la siguiente lista, están pensados para ser consumidos para la arquitectura de este starter, o arquitectura similar siguiento los lineamientos de schematics.

Package Descripción Versión Changelog
@tresdoce/nestjs-health Módulo de health check: liveness/readiness version changelog
@tresdoce/nestjs-database Módulo conexión a base de datos Mongo version changelog
@tresdoce/nestjs-httpclient Módulo http con axios y axios-retry version changelog

📤 Commits

Para los mensajes de commits se toma como referencia conventional commits.

<type>[optional scope]: <description>

[optional body]

[optional footer]
  • type: chore, docs, feat, fix, refactor (más comunes)
  • scope: indica la página, componente, funcionalidad
  • description: comienza en minúsculas y no debe superar los 72 caracteres.

📄 Changelog

All notable changes to this project will be documented in Changelog file.


Mex

Made with ❤

About

Starter for BFF, API Rest and microservice with NestJS

License:MIT License


Languages

Language:TypeScript 93.5%Language:JavaScript 2.9%Language:Dockerfile 2.1%Language:Shell 1.4%