Skip to content

Microsserviço em Node.Js utilizando serviço de mensageria, envio de e-mail e gateway de pagamento. Aplicando Princípios SOLID, Clean Architecture e TDD.

Notifications You must be signed in to change notification settings

SilvioLucasDev/microservice-node

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

microservice-node

Microsserviço em Node.js que utiliza RabbitMQ para mensageria, Mailtrap para envio de e-mails e Asaas como gateway de pagamento. Utiliza banco de dados relacional Postgres com Prisma como ORM. O projeto foi desenvolvido desenvolvido seguindo a metodologia TDD (Test-Driven Development) e aplicando os princípios SOLID, Clean Architecture e Design Patterns para resolver desafios comuns de desenvolvimento.

Para ter uma ideia mais concreta do projeto, você pode assistir a um vídeo demonstrando o fluxo de compra de ingressos por boleto aqui

Bibliotecas, Ferramentas e Serviços

  • NPM
  • Node
  • AmqpLib (RabbitMQ)
  • NodeMailer (Mailtrap)
  • Asaas (Gateway de Pagamento)
  • Swagger
  • Typescript
  • Git
  • Jest
  • Ts-Jest
  • Jest-Mock-Extended
  • MockDate
  • Prisma
  • UUID
  • Axios
  • Postgres
  • Express
  • Cors
  • Supertest
  • Eslint
  • Standard Javascript Style
  • Rimraf
  • Module-Alias
  • Npm Check
  • DotEnv
  • Ts-Node-Dev

Metodologias e Designs

  • TDD
  • Clean Architecture
  • SOLID
  • Clean Code
  • GitFlow
  • Use Cases
  • KISS (Keep It Simple, Stupid)
  • YAGNI (You Aren't Gonna Need It)
  • DRY (Don't Repeat Yourself)

Design Patterns

  • Factory
  • Singleton
  • Builder
  • Composite
  • Dependency Injection
  • Adapter

Componentes

O projeto é composto por quatro aplicações independentes, cada uma com sua responsabilidade específica:

1 - Email: Responsável pelo envio de e-mails.
2 - Event: Responsável por criar o ingresso e chamar o serviço de pagamento.
3 - Payment: Responsável por realizar o pagamento integrando com gateways de pagamento.
4 - User: Lida com informações de usuário.

Documentação

As aplicações que possuem rotas foram documentadas com Swagger. Você pode acessar a documentação na seguinte URL: http://localhost:{PORT}/api-docs/

Executando a Aplicação

Com Docker

Certifique-se de ter o Docker instalado em sua máquina.

1 - Env: Renomeie os arquivos .env.example para .env e configure-os de acordo.
2 - Iniciar Docker: Na raiz do projeto, execute o comando docker compose up

Sem Docker

Certifique-se de ter o PostgreSQL, RabbitMQ e o NodeJs instalados em sua máquina.

Dentro do diretório de cada serviço, siga os seguintes passos:

1 - Env: Renomeie os arquivos .env.example para .env e configure-os de acordo.
2 - Instalação de Dependências: Execute npm install para instalar todas as dependências necessárias.
3 - Migrations e Seed: Execute npx prisma migrate dev para rodar as migrations e a seed do banco de dados.
4 - Executando o Servidor: Execute npm run dev para iniciar o servidor na porta especificada no .env e todos os serviços da aplicação.
5 - Testes: Para rodar os testes unitários, execute npm run test:unit. Para os testes de integração e E2E, execute npm run test:integration.

About

Microsserviço em Node.Js utilizando serviço de mensageria, envio de e-mail e gateway de pagamento. Aplicando Princípios SOLID, Clean Architecture e TDD.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published