Status do projeto: Concluído ✔️
Nesse projeto foi desenvolvido uma API RESTful para gerenciamento de livros. Aqui podem ser feitas as seguintes operações:
- Adicionar um novo livro (nome, autor, editora, ano de publicação, número de páginas);
- Listar todos os livros;
- Buscar um livro pelo ID;
- Atualizar informações de um livro pelo ID;
- Deletar um livro pelo ID;
Foi desenvolvido uma aplicação em 4 camadas:
- Controller: Camada com acesso direto ao express (Request, Response);
- Service: Toda a parte de regras de negocio;
- Repository: Tem contato direto com o ORM e respeita uma interface (contrato) pra facilitar uma eventual substituição, utilizei sequelize.js, mas assim fica facil a substituição dele por Prisma ou TypeORM caso seja necessário;
- Model/Database: Configuração do ORM (conexão e criação de banco de dados);
- Clone o repositório
git@github.com:GusCabraal/library-manager.git
- Entre no projeto
cd library-manager
- Instale as dependencias
npm install
- Configure as variaveis de ambiente presentes no arquivo
.env.example
- Rode os serviços
books_api
ebooks_api_db
docker-compose up -d
- Entre no container node
docker exec -it books_api bash
- Rode a API
npm start
- Caso tenha algum problema de permissão negada com o comando acima, rode
chown -R root /app
e dê um novonpm start
- Acesse a API no localmente no endereço
http://localhost:3001
- Você pode consumir a API importando o arquivo
routes-project.json
para dentro do Insominia
Foi realizada a documentação da API utilizando o swagger, a documentação pode ser acessada aqui.
Foram realizados testes de integração em todas as rotas da aplicação.
- Execute o comando:
npm test