Essa API faz parte do curso do professor Rodrigo Manguinho (Mango) na Udemy.
O objetivo do curso é mostrar como criar uma API com uma arquitetura bem definida e desacoplada, utilizando TDD (programação orientada a testes) como metodologia de trabalho, Clean Architecture para fazer a distribuição de responsabilidades em camadas, sempre seguindo os princípios do SOLID e, sempre que possível, aplicando Design Patterns para resolver alguns problemas comuns.
Para rodar a aplicação, você precisará ter instalado na sua máquina:
Instale as dependências:
$ npm i
Execute a aplicação:
$ npm start
- 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
- Factory
- Adapter
- Composite
- Decorator
- Dependency Injection
- Composition Root
- TDD
- Clean Architecture
- DDD
- Conventional Commits
- GitFlow
- Modular Design
- Dependency Diagrams
- Use Cases
- Recebe uma requisição do tipo POST na rota /api/signup
- Valida dados obrigatórios name, email, password e passwordConfirmation
- Valida que password e passwordConfirmation são iguais
- Valida que o campo email é um e-mail válido
- Valida se já existe um usuário com o email fornecido
- Gera uma senha criptografada (essa senha não pode ser descriptografada)
- Cria uma conta para o usuário com os dados informados, substituindo a senha pela senha criptorafada
- Gera um token de acesso a partir do ID do usuário
- Atualiza os dados do usuário com o token de acesso gerado
- Retorna 200 com o token de acesso e o nome do usuário
- Retorna erro 404 se a API não existir
- Retorna erro 400 se name, email, password ou passwordConfirmation não forem fornecidos pelo usuário
- Retorna erro 400 se password e passwordConfirmation não forem iguais
- Retorna erro 400 se o campo email for um e-mail inválido
- Retorna erro 403 se o email fornecido já estiver em uso
- Retorna erro 500 se der erro ao tentar gerar uma senha criptografada
- Retorna erro 500 se der erro ao tentar criar a conta do usuário
- Retorna erro 500 se der erro ao tentar gerar o token de acesso
- Retorna erro 500 se der erro ao tentar atualizar o usuário com o token de acesso gerado
- Recebe uma requisição do tipo POST na rota /api/login
- Valida dados obrigatórios email e password
- Valida que o campo email é um e-mail válido
- Busca o usuário com o email e senha fornecidos
- Gera um token de acesso a partir do ID do usuário
- Atualiza os dados do usuário com o token de acesso gerado
- Retorna 200 com o token de acesso e o nome do usuário
- Retorna erro 404 se a API não existir
- Retorna erro 400 se name, email, password ou passwordConfirmation não forem fornecidos pelo usuário
- Retorna erro 400 se password e passwordConfirmation não forem iguais
- Retorna erro 400 se o campo email for um e-mail inválido
- Retorna erro 500 se der erro ao tentar gerar uma senha criptografada
- Retorna erro 500 se der erro ao tentar criar a conta do usuário