Projeto baseado no desafio da rinha de backend
- instalar dependências:
bun install
-
copiar o arquivo
.env.example
como.env
e atualizar os valores se necessário -
run:
bun run src/index.js
Montar um crud de pessoas
, uma aplicação web que receba as seguintes requisições:
POST /pessoas
Success response status: 201 Response headerRequest Body { "apelido": "josé", "nome": "José Roberto", "nascimento": "2000-10-01", "stack": ["C#", "Node", "Oracle"] }
Location: /pessoas/:id
Requisitos
- Resposta:
- Para requisições válidas, a API deve retornar 201 junto com header 'Location: /pessoas/:id' onde ':id' é o id (UUID) da pessoa que acabou de ser criada, sem necessidade de conteúdo da resposta;
- Para requisições inválidas, o status deve ser 422, sem necessidade de conteúdo da resposta;
- Requisições inválidas:
apelido
:- não pode ser
null
(422) - deve ser único (422)
- não pode ser
nome
:- não pode ser
null
(422) - deve ser string (400)
- não pode ser
stack
:- deve ser string array
GET /pessoas/[:id]
Response Body { "id": "f7379ae8-8f9b-4cd5-8221-51efe19e721b", "apelido": "josé", "nome": "José Roberto", "nascimento": "2000-10-01", "stack": ["C#", "Node", "Oracle"] }
GET /pessoas?t=[:termo-de-busca]
Response Body [ { "id": "f7379ae8-8f9b-4cd5-8221-51efe19e721b", "apelido": "josé", "nome": "José Roberto", "nascimento": "2000-10-01", "stack": ["C#", "Node", "Oracle"] }, { "id": "5ce4668c-4710-4cfb-ae5f-38988d6d49cb", "apelido": "ana", "nome": "Ana Barbosa", "nascimento": "1985-09-23", "stack": ["Node", "Postgres"] } ]
GET /contagem-pessoas
Response Body23
A aplicação deve ser hospedada através do docker-compose, contendo uma instância nginx para load-balancer, 2 instancias da aplicação e o banco de dados postgres.
flowchart TD
G(Stress Test - Gatling) -.-> LB(Load Balancer - Nginx)
subgraph Sua Aplicação
LB -.-> API1(API - instância 01)
LB -.-> API2(API - instância 02)
API1 -.-> Db[(Database)]
API2 -.-> Db[(Database)]
end