- JavaScript 99.9%
- Dockerfile 0.1%
|
|
||
|---|---|---|
| deploy | ||
| prisma | ||
| src | ||
| .editorconfig | ||
| .envExample | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| .npmrc | ||
| docker-compose.yml | ||
| Dockerfile | ||
| jest.config.js | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| server.js | ||
🚀 API — Sistema de Agendamento de Salas
Bem-vindo à API Sitema de agendamento de salas. Este sistema permite o gerenciamento e agendamento de salas em uma instituição de forma eficiente e segura, oferecendo recursos de cadastro de usuários, controle de reservas e gestão de permissões.
📖 Sobre o Projeto
Este projeto tem como objetivo criar um sistema de reservas de salas, onde usuários autenticados podem consultar a disponibilidade, realizar agendamentos e cancelar reservas. Administradores podem controlar o cadastro de salas e editar reservas, além de gerenciar os usuários do sistema.
A API foi desenvolvida seguindo boas práticas de arquitetura backend e segurança, com validação de dados, autenticação via tokens e documentação interativa.
🛠 Tecnologias Utilizadas
- Node.js
- Express
- Prisma (ORM)
- PostgreSQL
- Zod (validações)
- Swagger (documentação)
- Jest (testes unitários)
- 📦 [Seu pacote npm pessoal (se quiser, coloque o nome aqui)]
📌 Funcionalidades
- 📑 Cadastro, listagem e atualização de usuários
- 🔐 Autenticação com login, logout e refresh de token
- 🏢 Cadastro, listagem e atualização de salas
- 📆 Cadastro, listagem, atualização e exclusão de reservas
- ✅ Validações de dados com Zod
- 📝 Documentação interativa via Swagger
- 🧪 Testes unitários com Jest
📦 Instalação e Execução
🔧 Pré-requisitos
- Node.js 18+
- PostgreSQL
- npm
📥 Instalação
Clone o projeto:
git clone https://gitlab.fslab.dev/Kelve.Oliveira/api-sistema-agendamento-salas.git
cd api-sistema-agendamento-salas
npm install
⚙️ Configuração do Ambiente
Crie um arquivo .env na raiz do projeto com as seguintes variáveis de ambiente:
env
DATABASE_URL="url-do-banco"
NODE_ENV="development"
PRIVATE_KEY="sua-chave-privada"
ACCESS_TOKEN_EXPIRATION="15m"
REFRESH_TOKEN_EXPIRATION="7d"
SWAGGER_DEV_URL="http://localhost:4242"
SWAGGER_PROD_URL="http://localhost:4242"
📚 Rodando as Migrations
Execute as migrations do Prisma para criar as tabelas no banco:
npm run prisma
🚀 Execução do Servidor Inicie o servidor de desenvolvimento com:
npm run dev
📑 Documentação da API
A documentação interativa das rotas está disponível via Swagger, acessível após iniciar o servidor:
A documentação inclui:
Descrição de todas as rotas e seus métodos (GET, POST, PATCH, DELETE)
Parâmetros esperados
Modelos de resposta
Testes interativos diretamente pela interface
📂 Estrutura de Pastas
src/
├── controllers/
├── services/
├── repositories/
├── middlewares/
├── routes/
├── schemas/
├── config/
├── prisma/
├── tests/
├── app.ts
└── server.ts
📌 Endpoints Disponíveis
📄 Usuários
-
POST /usuarios — Cadastrar usuário
-
GET /usuarios — Listar usuários
-
PATCH /usuarios/:id — Atualizar usuário
🔐 Autenticação
-
POST /login — Login de usuário
-
DELETE /logout — Logout
-
POST /refresh — Renovação de token
🏢 Salas
-
POST /salas — Cadastrar sala
-
GET /salas — Listar salas
-
PATCH /salas/:id — Atualizar sala
📆 Reservas
-
POST /reservas — Cadastrar reserva
-
GET /reservas — Listar reservas
-
PATCH /reservas/:id — Atualizar reserva
-
DELETE /reservas/:id — Cancelar reserva
📦 Pacotes e Dependências Notáveis
-
Express
-
Prisma
-
Zod
-
Swagger
-
Jest
📷 Demonstrações (opcional)
Caso deseje, adicione prints ou GIFs demonstrando:
O Swagger aberto
Exemplo de JSON de resposta
Consulta de reservas
Criação de nova reserva
📝 Considerações Finais
ainda pensando
👨💻 Autor
Kelve Oliveira 🔗 https://gitlab.fslab.dev/Kelve.Oliveira
📃 Licença Este projeto é de uso acadêmico e livre para fins educacionais.