O desafio consiste no desenvolvimento de uma API REST
Segue as instruções no link abaixo:
https://github.com/Brisanet/challenge-back-end#readme
A documentação da API fica na rota: http://localhost:5050/api/api-docs
- Node.js instalado
- npm (gerenciador de pacotes do Node.js) instalado
- PostgreSQL instalado
- Docker instalado caso prefira rodar por ele
- Faça o clone do repositório
- Na raíz do projeto execute
npm install
para instalar as dependências - Inicie o PostgreSQL na sua máquina e crie um banco de dados para a aplicação
- 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 - OpcionalSMTP_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
npx prisma migrate dev
para aplicar as migrations no banco de dados que você criounpm run build
faz o build da APInpm start
executa a API
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=
- Faça o clone do repositório
- Na raíz do projeto execute
npm install
para instalar as dependências - Para rodar o container do docker execute
npm run up
, pode demorar para iniciar. - Para encerrar o container execute
npm run down
- Criar Professor
- Criar Aluno
- Criar Cadeira
- Listar Cadeiras
- Criar Cadeiras Alunos
- Atualizar Cadeiras Alunos
- Express
- Typescript
- Prisma / Prismock
- Postgres
- Insomnia / Postman
- Jest
- Supertest
- Faker.js
- Validator
- Husky
- Rimraf
- Eslint
- Lint-Staged
- Mockdate
- Module-Alias
- Dotenv
- Npm-Check-Updates
- Nodemailer
- REST
- 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 Method
- Adapter
- Composite
- Decorator
- Dependency Injection
- Composition Root
- Singleton
- TDD
- Clean Architecture
- DDD
- Conventional Commits
- GitFlow
- Modular Design
- Dependency Diagrams
- Use Cases
- Continuous Integration
- Continuous Delivery
- Continuous Deployment
- Alias
- Log Personalizado
- Branch
- Reset
- Amend
- Tag
- Stash
- Merge
- Testes Unitários
- Testes de Integração
- Cobertura de Testes
- Test Doubles
- Mocks
- Stubs
- Spies
- Fakes