Skip to content

GusCabraal/library-manager

Repository files navigation

Projeto Library Manager

Status do projeto: Concluído ✔️

Descrição do projeto

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;

Estrutura do projeto

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);

Como rodar

  • 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 e books_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 novo npm 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

Documentação

Foi realizada a documentação da API utilizando o swagger, a documentação pode ser acessada aqui.

Testes

Foram realizados testes de integração em todas as rotas da aplicação.

Rodando os testes
  • Execute o comando:
npm test

cobertura_de_testes

Tecnologias utilizadas