Skip to content

Fel1324/HelpDeskAPI

Repository files navigation

🚀 HelpDeskAPI

Uma API RESTful para gestão de chamados, desenvolvida com Node.js, Express, Prisma ORM e autenticação JWT.


✨ Funcionalidades

  • 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

🛠️ Tecnologias Utilizadas


🚦 Como rodar o projeto

  1. Clone o repositório
    git clone https://github.com/Fel1324/HelpDeskAPI.git
    cd HelpDeskAPI
    
  2. Instale as dependências:
    npm install
    
  3. 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"
    
  4. Suba o banco de dados com Docker
    docker-compose up -d
    ou
    docker compose up -d
    
  5. Execute as migrations e as seeds do Prisma:
    npx prisma migrate deploy
    npx prisma db seed
    
  6. Rode o servidor em modo desenvolvimento:
    npm run dev
    

O servidor estará disponível em http://localhost:3333.


🧪 Rodando os testes

npm run test:dev

📚 Endpoints

SignUp

  • POST /users
    Cria conta de usuário

SignIn

  • POST /sessions
    Realiza login e retorna o token JWT.

Horários

  • GET /times Lista todos os horários disponíveis para atribuir a um técnico. (Requer autenticação JWT, somente admin)

Técnicos

  • 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)

Serviços

  • 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)

Clientes

  • 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)

Chamados

  • 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)

Usuários

  • 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)

Upload de Foto de Perfil

  • 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)


👨‍💻 Desenvolvedor do Projeto

  • Rafael Roberto de Oliveira

💡 Contribuidor


📄 Licença

Este projeto está sob a licença MIT.


Feito com ♥ by Rocketseat 👋 Participe da nossa comunidade!

About

Projeto desenvolvimento como desafio prático final pela formação Full-Stack da Rocketseat.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published