Esta API foi desenvolvida para simular o gerenciamento de livros e empréstimos em uma biblioteca. O foco principal é demonstrar proficiência em back-end, segurança e arquitetura escalável utilizando Node.js.
O projeto segue a Arquitetura em Camadas (MVC), garantindo a separação de responsabilidades para facilitar a manutenção e escalabilidade:
-
Models: Lógica da aplicação.
-
Controllers: Faz o controle entre a requisição HTTP e os models.
-
Routes: Define os endpoints e mapeia as requisições HTTP.
-
Middleware: Funções intermediárias essenciais para segurança (JWT, Validação) e tratamento de erros.
-
Express: Framework para roteamento HTTP e estrutura de middlewares.
-
Autenticação Segura (JWT): Utilizei JSON Web Tokens (JWT) para gerenciar a autenticação e autorização de usuários. O JWT é validado por um middleware em cada requisição a rotas protegidas, garantindo que apenas usuários autorizados possam manipular livros e empréstimos.
-
Criptografia (Bcrypt): Todas as senhas de usuários são hasheadas usando a biblioteca Bcrypt antes de serem armazenadas. Isso impede o armazenamento de dados sensíveis em texto puro, mitigando riscos em caso de vazamento de dados.
-
Identificadores (UUID): Para garantir a unicidade e prevenir a previsibilidade ou colisão de identificadores, utilizei UUIDs na criação de recursos.
- POST Register
- POST Login
- GET Books
- GET Book/:id
- POST CreateBook
- PUT UpdateBook/:id
- DELETE DeleteBook/:id
- GET Loans
- GET Loan/:id
- POST CreateLoan
- PUT ReturnLoan/:id
- GET UsersLoan/:id
👉 Você pode testar todas as rotas diretamente no Postman através da collection abaixo:
Collection do Postman
src/
├── controller/
│ ├── booksController.js
│ ├── loansController.js
│ └── usersController.js
│
├── error/
│ └── HttpError.js
│
├── middleware/
│ ├── authMiddleware.js
│ └── errorMiddleware.js
│
├── models/
│ ├── booksModel.js
│ ├── loansModel.js
│ └── usersModel.js
│
├── routes/
│ ├── apiRouter.js
│ └── authRouter.js
│
└── server.js