Uma API RESTful para gestão de chamados, desenvolvida com Node.js, Express, Prisma ORM e autenticação JWT.
- Cadastro e autenticação de usuários (JWT)
- Gestão de técnicos e seus horários disponíveis
- Criação e acompanhamento de chamados
- Serviços técnicos cadastrados via seed
- Controle de permissões por papel (admin, technician, client)
- Validações robustas com Zod
- Integração com banco de dados via Prisma
- Logs e tratamento de erros personalizados
- Clone o repositório
git clone https://github.com/Fel1324/HelpDeskAPI.git cd HelpDeskAPI
- Instale as dependências:
npm install
- Configure o ambiente: Crie um arquivo .env na raiz com as variáveis:
DATABASE_URL="postgres://postgres:postgres@localhost:5432/helpdesk?schema=public" JWT_SECRET="sua_chave_secreta" PORT=3333 ADMIN_PASSWORD="sua_senha_de_admin"
- Suba o banco de dados com Docker
ou
docker-compose up -d
docker compose up -d
- Execute as migrations e as seeds do Prisma:
npx prisma migrate deploy npx prisma db seed
- Rode o servidor em modo desenvolvimento:
npm run dev
O servidor estará disponível em http://localhost:3333.
npm run test:dev
- POST /users
Cria conta de usuário
- POST /sessions
Realiza login e retorna o token JWT.
- GET /times Lista todos os horários disponíveis para atribuir a um técnico. (Requer autenticação JWT, somente admin)
-
GET /technicians Lista todos os técnicos e seus horários. (Requer autenticação JWT, somente admin)
-
POST /technicians Cria um novo técnico. (Requer autenticação JWT, somente admin)
-
PUT /technicians/:id Atualiza dados e horários de um técnico. (Requer autenticação JWT, somente admin)
-
GET /services Lista todos os serviços disponíveis. (Requer autenticação JWT)
-
POST /services Cria um novo serviço. (Requer autenticação JWT, somente admin)
-
POST /services/additional/:ticketId adiciona um serviço adicional para um chamado se for necessário. (Requer autenticação JWT, somente técnico responsável pelo chamado)
-
PUT /services/:id Atualiza as informações de um serviço. (Requer autenticação JWT, somente admin)
-
PATCH /services/:id Atualiza o status de um serviço. (Requer autenticação JWT, somente admin)
-
DELETE /services/additional/delete/:ticketId/:serviceId deleta um serviço adicional de um chamado. (Requer autenticação JWT, somente técnico responsável pelo chamado)
-
GET /customers Lista todos os clientes. (Requer autenticação JWT, somente admin)
-
PUT /customers/:id Atualiza os dados de um cliente. (Requer autenticação JWT, somente admin)
-
DELETE /customers/:id Deleta a conta um cliente. (Requer autenticação JWT, somente admin e cliente responsável pela conta)
-
GET /tickets Lista todos os chamados. (Requer autenticação JWT)
-
GET /tickets/:id Detalha um chamado específico. (Requer autenticação JWT)
-
POST /tickets Cria um novo chamado. (Requer autenticação JWT, somente cliente)
-
PATCH /tickets/:id Atualiza o status de um chamado. (Requer autenticação JWT, somente admin e técnico responsável pelo chamado)
-
GET /profile/:id Lista os dados da conta de usuário. (Requer autenticação JWT, somente técnico e cliente responsáveis pela conta)
-
PUT /profile/:id Atualiza os dados da conta de usuário. (Requer autenticação JWT, somente técnico e cliente responsáveis pela conta)
-
PATCH /profile/:id Atualiza a senha da conta de usuário (Requer autenticação JWT, somente técnico e cliente responsáveis pela conta)
-
GET /uploads Lista foto de perfil (Requer autenticação JWT)
-
POST /uploads/:id Faz upload de foto de perfil e a atualiza logo em seguida (Requer autenticação JWT, somente técnico e cliente responsáveis pela conta)
- Rafael Roberto de Oliveira
Este projeto está sob a licença MIT.
Feito com ♥ by Rocketseat 👋 Participe da nossa comunidade!