Esta é uma API para gestão de livros e usuários, desenvolvida como parte de um processo seletivo para a Emakers Jr.. Esta versão é a segunda tentativa de desenvolvimento de uma API para esse processo seletivo, com melhorias planejadas para adicionar funcionalidades adicionais e melhorar a testabilidade.
A versão anterior dessa API está disponível em BibliotecaAPI.
Para ter acesso ao diagrama relacional original, clique aqui.
A arquitetura de dados foi planejada com base nas seguintes entidades principais:
-
User:
- Observação: Excluí o atributo
CEP
da entidadePessoa
, optando por criar uma nova entidadeAddress
para lidar com o endereço do usuário.
- Observação: Excluí o atributo
-
Address:
- A ideia é que a entidade
Address
seja preenchida com os dados retornados pela requisição à API ViaCEP, utilizando o código postal como base.
- A ideia é que a entidade
-
Book:
- Representa o livro, contemplando informações como título, quantidade de exemplares disponíveis, autor, etc.
A arquitetura foi planejada com base nas necessidades do sistema, e algumas mudanças foram feitas no diagrama relacional fornecido pela empresa:
- A exclusão do atributo
CEP
da entidadePessoa
, substituindo-o por uma relação com a nova entidadeAddress
.
- Spring Boot: Framework principal para o backend.
- Spring Security, OAuth2 e JWT: Implementação de segurança.
- Java Mail Sender: Para envio de e-mails de confirmação e recuperação de senha.
- Open Feign: Consumo da API ViaCEP para obter informações de endereço.
- Swagger: Documentação dos endpoints da API.
- JUnit, Mockito: Para testes de unidade e integração.
- TypeScript, HTML, CSS e React: Para o frontend (que, atualmente, conta com telas de cadastro, login, perfil de usuário e empréstimo de livros).
- Clone o repositório:
git clone https://github.com/gabrafo/Library-Web.git cd Library-Web
-
Navegue até a subpasta "backend":
cd backend
-
Compile o projeto utilizando o Maven:
mvn clean install
-
Execute o Docker Compose.
docker-compose build docker-compose up
-
A API estará disponível em
http://localhost:8080
, e a documentação emhttp://localhost:8080/swagger-ui/index.html#/
.
-
Navegue até a subpasta "frontend":
cd backend
-
Instale as dependências do projeto usando NPM:
npm install
-
Execute o projeto:
npm run dev
- Testes: Como mencionado, planejo melhor ainda mais a cobertura de testes, para que seja mais robusta.