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
- 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
- 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)
- Factory
- Singleton
- Builder
- Composite
- Dependency Injection
- Adapter
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.
As aplicações que possuem rotas foram documentadas com Swagger. Você pode acessar a documentação na seguinte URL: http://localhost:{PORT}/api-docs/
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
Certifique-se de ter o PostgreSQL, RabbitMQ e o NodeJs instalados em sua máquina.
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
.