Corelab API Challenge
Abaixo segue algumas decisões que tomei e funcionalidades da API.
Link do repositório de back end
- https://github.com/matheusnff85/corelab-api-challenge/
Link abaixo para o vídeo demonstrando e explicando sobre o app
- https://www.youtube.com/watch?v=cSbDV5AMkCE
Stacks utilizadas
- Node.js: Ambiente de execução JavaScript no lado do servidor.
- TypeScript: Linguagem de programação.
- Fastify: Framework web para Node.js.
- Zod: Biblioteca para validação e esquemas de tipos em TypeScript/JavaScript.
- Prisma: ORM (Object-Relational Mapping) para trabalhar com bancos de dados.
- PostgreSQL: Sistema de gerenciamento de banco de dados relacional.
- Docker: Plataforma para criar, implantar e executar aplicações em contêineres.
- Vitest: Framework para realização dos testes.
Decisões
-
Decidi utilizar o Fastify como framework por ser uma aplicação simples que não necessita de um framework robusto como o NestJS. O Zod facilita a validação dos dados e se dá bem com o Fastify. O Prisma é bastante, mas BASTANTE simples de usar, e o Docker é utilizado para o container do PostgreSQL. O TypeScript é escolhido pela tipagem.
-
Iniciei o desenvolvimento pelo backend por ser minha preferência e onde me desempenho melhor.
-
Organizei as rotas em arquivos e suas validações em seus respectivos arquivos, a fim de facilitar a visualização e manutenção.
-
Desenvolvi testes E2E para garantir o funcionamento correto da aplicação.
Rodando localmente
Clone o projeto
git clone git@github.com:matheusnff85/corelab-api-challenge.git
Entre no diretório do projeto
cd corelab-api-challenge
Instale as dependências
npm install
Adicione as variaveis de ambiente
-
Alternativa 1 - Mude o nome do arquivo
.env.example
localizado na raiz do projeto para somente.env
-
Alternativa 2 - Crie um novo
.env
na raiz do projeto e cole a linha abaixo dentro dele
DATABASE_URL="postgresql://root:docker@localhost:5432/corelabapi?schema=public"
Inicie o container docker
docker-compose up
Ou caso queira visualizar os logs do container.
docker-compose up -D
Inicie o servidor
npm run start
Documentação da API
Retorna um array com todas as tarefas
GET /tasks
Retorno
[
{
"id": "a876ab10-5bda-41bc-a504-82bfaac5bce5",
"title": "Ser Aprovado na Corelab",
"content": "Finalizar o projeto e enviar.",
"isFavorite": true,
"color": "#8E3EF7",
"createdAt": "2024-08-07T22:49:31.425Z"
}
]
Cria uma nova tarefa
POST /tasks
{
"title": "Ser Aprovado na Corelab",
"content": "Finalizar o projeto e enviar.",
"isFavorite": true,
"color": "#8E3EF7"
}
Retorno
{
"taskId": "a876ab10-5bda-41bc-a504-82bfaac5bce5"
}
Atualizar uma tarefa
PATCH /tasks/a876ab10-5bda-41bc-a504-82bfaac5bce5
Além do parâmetro, todas as informações para atualizar a tarefa são enviadas no body da requisição assim como na rota para criar uma nova tarefa.
Retorno
{
"message": "Tarefa atualizada com sucesso!"
}
Exclui uma tarefa
DELETE /tasks/a876ab10-5bda-41bc-a504-82bfaac5bce5
Retorno
{
"message": "Tarefa excluída com sucesso!"
}