Skip to content

Back-end challenge Brisalabs | API em NodeJs usando Typescript, TDD, Clean Architecture, Design Patterns e SOLID principles

Notifications You must be signed in to change notification settings

wpaq/brisanet-challenge-back-end

Repository files navigation

Build Status js-standard-style License: ISC Open Source

Desafio Back end Brisalabs 💻

O desafio consiste no desenvolvimento de uma API REST
Segue as instruções no link abaixo:

https://github.com/Brisanet/challenge-back-end#readme


Documentação da API com Swagger

A documentação da API fica na rota: http://localhost:5050/api/api-docs

Pré-requisitos

  • Node.js instalado
  • npm (gerenciador de pacotes do Node.js) instalado
  • PostgreSQL instalado
  • Docker instalado caso prefira rodar por ele

Configurando o Banco de Dados e Rodando a API Manualmente

  1. Faça o clone do repositório
  2. Na raíz do projeto execute npm install para instalar as dependências
  3. Inicie o PostgreSQL na sua máquina e crie um banco de dados para a aplicação
  4. Crie e configure o arquivo .env na raiz do projeto com as seguintes variáveis ambiente:

  • DATABASE_URL=postgresql://USERNAME:PASSWORD@HOST:PORT/DATABASE_NAME?schema=public
  • API_PORT=, default: 5050 - Opcional
  • SMTP_HOST=
  • SMTP_PORT=
  • SMTP_USER=
  • SMTP_PASSWORD=

Caso não tenha um domínio SMTP e deseja utilizar a API somente para testes, recomendo utilizar: https://ethereal.email

  1. npx prisma migrate dev para aplicar as migrations no banco de dados que você criou
  2. npm run build faz o build da API
  3. npm start executa a API

Rodando a API com Docker

Eu deixei variáveis ambientes de teste utilizando o SMTP do Ethereal no docker-compose.yml
Caso queira utilizar um domínio SMTP próprio ou visualizar no mailBox da conta do Ethereal que você criou, basta modificar elas na parte de environment no arquivo docker-compose.yml

  • SMTP_HOST=
  • SMTP_PORT=
  • SMTP_USER=
  • SMTP_PASSWORD=

  1. Faça o clone do repositório
  2. Na raíz do projeto execute npm install para instalar as dependências
  3. Para rodar o container do docker execute npm run up, pode demorar para iniciar.
  4. Para encerrar o container execute npm run down

APIs construídas no desafio

Requerimentos da API e Rotas do Insomnia

Tecnologias utilizadas 🚀

Princípios utilizados

  • Single Responsibility Principle (SRP)
  • Open Closed Principle (OCP)
  • Liskov Substitution Principle (LSP)
  • Interface Segregation Principle (ISP)
  • Dependency Inversion Principle (DIP)
  • Separation of Concerns (SOC)
  • Don't Repeat Yourself (DRY)
  • You Aren't Gonna Need It (YAGNI)
  • Keep It Simple, Silly (KISS)
  • Composition Over Inheritance
  • Small Commits

Design Paterns

  • Factory Method
  • Adapter
  • Composite
  • Decorator
  • Dependency Injection
  • Composition Root
  • Singleton

Metodologias e Designs

  • TDD
  • Clean Architecture
  • DDD
  • Conventional Commits
  • GitFlow
  • Modular Design
  • Dependency Diagrams
  • Use Cases
  • Continuous Integration
  • Continuous Delivery
  • Continuous Deployment

Features do Git

  • Alias
  • Log Personalizado
  • Branch
  • Reset
  • Amend
  • Tag
  • Stash
  • Merge

Features de Testes

  • Testes Unitários
  • Testes de Integração
  • Cobertura de Testes
  • Test Doubles
  • Mocks
  • Stubs
  • Spies
  • Fakes