Coder Social home page Coder Social logo

jovicon / nestjs-clean-architecture-event-driven-template Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 854 KB

nestjs scalable event driven microservice template

JavaScript 2.11% Shell 0.11% Dockerfile 0.29% TypeScript 97.49%
architecture clean-architecture clean-code nodejs typescript docker docker-compose event-driven event-sourcing nestjs nestjs-backend nestjs-mongoose nestjs-template

nestjs-clean-architecture-event-driven-template's Introduction

Typescript Nest js Clean Architecture Template

Node web server running over Express for a Rest API

Que es clean architecture

Clean architecture es un conjunto de principios cuya finalidad principal es ocultar los detalles de implementación a la lógica de dominio de la aplicación.

De esta manera mantenemos aislada la lógica de negocios, consiguiendo tener un código mucho más mantenible y escalable en el tiempo.

Clean Architecture basic diagram

Porque Clean Architecture?

La finalidad de clean architecture es que la aplicación sea más sencilla de mantener y escalar en el tiempo, además que la logica de negocio no se vea afectada por detalles, implementaciones o elementos externos.

Pilares para Clean Architecture

La arquitectura clean se basa en los tres siguientes pilares:

  • Domain Driven Design: los detalles de implementación de la lógica de dominio deben estar separados de implementaciónes, detalles o adaptadores de cualquier tipo, como infraestructura, frameworks, UI entre otros.

  • Modular Architecture: se basa en que los módulos de la aplicación sean independientes y que sean capaces de ser reutilizados, dichos modulos pueden ser utilidades compartidas, Guards, Adaptadores, Factories.

  • Test Driven Development: Este pilar se basa en que los tests de la aplicación sean capaces de probar la lógica de dominio de la aplicación.

Buenas practicas recomendadas

Instalación del template

npm i && npm run prepare

Description

Las carpetas principales propuestas para el proyecto son:

  • shared: carpeta donde se encuentran todos modulos reutilizables que sean utilidades compartidas.
  • modules: carpeta donde se encuentran todos los modulos de la aplicación, incluyendo, casos de uso, adaptadores y dominio.

Estructura interna de la carpeta shared

shared/
  - adapters/
  - application/
  - domain/
  - common/
  - core/
  - utils/
  - constants/

Estructura interna de la carpeta modules

modules/
  - module_name (ej: users)
    - adapters/
    - application/
      - infrastructure_application (ej: http - queue - daemon - jobs)
      - usecases/
    - domain/

App Plugins

Development Tools

  • NestJS
  • TypeScript
  • Axios
  • Express
  • Winston Logger

Clean code plugins

  • Prettier
  • ESLint
  • Airbnb Code style Guide
  • SonarQube Pluggins (VS Code)

Test plugins

  • Jest
  • Husky

Fuentes de información

API usada para el template

Versionado 📌

  • Ocupar SemVer para el versionado semantico.

Rules 📢

Nomenclatura Ramas

  • feature-*

  • release ----> Protegida

  • hotfix-*

  • develop ----> Protegida

  • main ----> Protegida

Ejemplo

Feature-login-re-v1-1

Rules

No se permiten mayúsculas

No se permiten guiones bajos

No se permiten espacios

No se permiten caracteres especiales ($#&%?¿)

REGEX Ramas

(((feature|release|hotfix){1}-{1})\/*([a-z|0-9|-]*)$)|develop|release|main

REGEX TAG

/^main-v\d+\.\d+\.\d+$

Mas Información 📖

Si necesitas mas información la puedes encontrar en:

nestjs-clean-architecture-event-driven-template's People

Contributors

jovicon avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.