Uma API REST construída com Node.js, Express e Mongoose. Este projeto serve como back-end para um sistema de livraria, permitindo o gerenciamento de livros e autores.
- Node.js 22 (Ambiente de execução JavaScript)
- Express (Framework para construção de APIs)
- Mongoose (ODM para modelagem de dados com o MongoDB)
- MongoDB (Banco de dados NoSQL)
- Docker (Containerização)
- Jest (Framework de testes)
- ESLint (Linting de código)
- Prettier (Formatação de código)
- CRUD de Livros: Criação, leitura, atualização e remoção de livros.
- CRUD de Autores: Gerenciamento de autores.
- Busca: Localização de livros e autores por ID.
- Relacionamentos: Associação de dados entre livros e autores.
- Node.js 22+ (ou use o arquivo
.nvmrc) - MongoDB (local ou Atlas)
- Docker (opcional)
git clone https://github.com/caiolucasbittencourt/bookstore-api-express.git
cd bookstore-api-express
npm installCrie um arquivo .env na raiz do projeto baseado no .env.example:
cp .env.example .envConfigure a variável DB_CONNECTION_STRING com sua string de conexão do MongoDB.
npm run devnpm startnpm run docker:up # Inicia os containers
npm run docker:down # Para os containers
npm run docker:logs # Visualiza logs da API
npm run docker:build # Rebuild da imagem| Script | Descrição |
|---|---|
npm run dev |
Inicia o servidor com hot-reload (nodemon) |
npm start |
Inicia o servidor em produção |
npm test |
Executa os testes |
npm run test:watch |
Executa testes em modo watch |
npm run test:coverage |
Executa testes com relatório de cobertura |
npm run lint |
Executa o ESLint |
npm run lint:fix |
Corrige erros do ESLint automaticamente |
npm run format |
Formata o código com Prettier |
npm run format:check |
Verifica formatação sem alterar |
npm run docker:up |
Sobe os containers Docker |
npm run docker:down |
Para os containers Docker |
| Método | Rota | Descrição |
|---|---|---|
| GET | / |
Retorna informações da API |
Exemplo de resposta:
{
"name": "Bookstore API",
"version": "1.0.0",
"description": "API REST para gerenciamento de livros e autores",
"endpoints": {
"livros": "/livros",
"autores": "/autores"
},
"documentation": "https://github.com/caiolucasbittencourt/bookstore-api-express"
}| Método | Rota | Descrição |
|---|---|---|
| GET | /livros |
Lista todos os livros |
| GET | /livros/:id |
Busca um livro por ID |
| POST | /livros |
Cadastra um novo livro |
| PUT | /livros/:id |
Atualiza um livro existente |
| DELETE | /livros/:id |
Remove um livro |
| Método | Rota | Descrição |
|---|---|---|
| GET | /autores |
Lista todos os autores |
| GET | /autores/:id |
Busca um autor por ID |
| POST | /autores |
Cadastra um novo autor |
| PUT | /autores/:id |
Atualiza um autor existente |
| DELETE | /autores/:id |
Remove um autor |