Projeto final de módulo (IV) do curso de Web Dev Full Stack da Resilia Educação.
Projeto realizado utilizando o Node.js com framework Express.
API em produção: https://rosemary-api.up.railway.app
⚠️ O Railway free tier pode colocar o app para dormir após 15 minutos sem uso. O primeiro acesso pode levar alguns segundos.
Esse projeto tem como objetivo criar uma API REST para uma entidade (agenda) de um estúdio de tatuagem, onde deve ser possível aplicar as operações de CRUD.
Dependências de produção:
| Pacote | Versão | Descrição |
|---|---|---|
| Cors | 2.8.5 | Habilita CORS na API |
| Express | 4.17.3 | Framework web |
| SQLite3 | 5.0.0 | Banco de dados SQLite |
Dependências de desenvolvimento:
| Pacote | Versão | Descrição |
|---|---|---|
| Nodemon | 2.0.15 | Reinicia servidor automaticamente |
| Jest | 27.5.1 | Framework de testes |
| Supertest | 6.2.2 | Testes de requisições HTTP |
# Clone o repositório
git clone https://github.com/LeoAChaves/Rosemary_API.git
# Entre na pasta
cd Rosemary_API
# Instale as dependências
npm install
# Crie e popule o banco de dados
npm run database
# Inicie o servidor
npm startA API estará disponível em http://localhost:3030
Retorna todos os agendamentos.
Resposta:
{
"agenda": [
{
"ID": 1,
"Cliente_ID": 1,
"Funcionario_ID": 3,
"Data": "2022-03-09",
"Hora": "09:30:00",
"Servico": "Portifolio_ID 5",
"Duracao": "60"
}
],
"error": false
}Retorna agendamento por ID.
Retorna todos os agendamentos de um cliente.
Retorna todos os agendamentos de um funcionário.
Retorna todos os agendamentos de uma data (formato: YYYY-MM-DD).
Cria um novo agendamento.
Requisição:
{
"Cliente_ID": 10,
"Funcionario_ID": 2,
"Data": "2024-12-15",
"Hora": "14:30:00",
"Servico": "Tatuagem de âncora",
"Duracao": "90"
}Atualiza um agendamento existente.
Remove um agendamento.
Para executar os testes:
npm run testRosemary_API/
├── src/
│ ├── assets/
│ │ └── README/
│ │ └── Rosemary.png
│ ├── controllers/
│ │ ├── indexController.js
│ │ └── agendaController.js
│ ├── DAO/
│ │ └── agendaDAO.js
│ ├── database/
│ │ ├── sqlite-db.js
│ │ ├── create-and-populate.js
│ │ └── database.db
│ └── models/
│ └── agendaModel.js
├── tests/
├── app.js
├── server.js
├── package.json
├── Dockerfile
├── railway.toml
└── README.md
Solução: O diretório do banco não tem permissão de escrita.
# Local
chmod 777 database/
# Railway
# Adicione um volume persistente conforme instruções acimaSolução: Altere a porta no arquivo server.js ou configure a variável PORT.
const port = process.env.PORT || 3030;Leonardo de Almeida Chaves
