{"id":31360575,"url":"https://github.com/fel1324/helpdeskapi","last_synced_at":"2026-04-07T07:43:50.710Z","repository":{"id":313239152,"uuid":"1026321839","full_name":"Fel1324/HelpDeskAPI","owner":"Fel1324","description":"Projeto desenvolvimento como desafio prático final pela formação Full-Stack da Rocketseat.","archived":false,"fork":false,"pushed_at":"2025-12-29T20:57:04.000Z","size":517,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-07T07:43:47.030Z","etag":null,"topics":["bcrypt","docker","express","jest","jwt","nodejs","postgresql","prisma-orm","supertest","zod"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Fel1324.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-25T17:23:06.000Z","updated_at":"2025-12-29T20:57:07.000Z","dependencies_parsed_at":"2025-09-04T19:34:39.976Z","dependency_job_id":"752bc44a-9e60-4f8e-9e23-9181f3cfeaf5","html_url":"https://github.com/Fel1324/HelpDeskAPI","commit_stats":null,"previous_names":["fel1324/helpdeskapi"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Fel1324/HelpDeskAPI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fel1324%2FHelpDeskAPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fel1324%2FHelpDeskAPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fel1324%2FHelpDeskAPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fel1324%2FHelpDeskAPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Fel1324","download_url":"https://codeload.github.com/Fel1324/HelpDeskAPI/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Fel1324%2FHelpDeskAPI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31504897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bcrypt","docker","express","jest","jwt","nodejs","postgresql","prisma-orm","supertest","zod"],"created_at":"2025-09-27T01:57:39.236Z","updated_at":"2026-04-07T07:43:50.688Z","avatar_url":"https://github.com/Fel1324.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 HelpDeskAPI\n\nAPI RESTful para gestão de chamados, desenvolvida com Node.js, Express, Prisma ORM e autenticação JWT.\n\n\u003cbr\u003e\n\n## ✨ Funcionalidades\n\n- **Cadastro e autenticação de usuários (JWT)**\n- **Gestão de técnicos e seus horários disponíveis**\n- **Criação e acompanhamento de chamados**\n- **Serviços técnicos cadastrados via seed**\n- **Controle de permissões por papel (admin, technician, client)**\n- **Validações robustas com Zod**\n- **Integração com banco de dados via Prisma**\n- **Logs e tratamento de erros personalizados**\n\n\u003cbr\u003e\n\n## 🛠️ Tecnologias Utilizadas\n\n- [Node.js](https://nodejs.org/)\n- [Express](https://expressjs.com/)\n- [Prisma ORM](https://www.prisma.io/)\n- [PostgreSQL](https://www.postgresql.org/)\n- [JWT](https://jwt.io/)\n- [Zod](https://zod.dev/)\n- [Jest](https://jestjs.io/) + [Supertest](https://github.com/ladjs/supertest)\n- [bcrypt](https://github.com/kelektiv/node.bcrypt.js)\n\n\u003cbr\u003e\n\n## 🚦 Como rodar o projeto\n\n1. **Clone o repositório**\n   ```bash\n   git clone https://github.com/Fel1324/HelpDeskAPI.git\n   cd HelpDeskAPI\n\n2. **Instale as dependências:**\n   ```bash\n   npm install\n\n3. **Configure o ambiente: Crie um arquivo .env na raiz com as variáveis:**\n   ```bash\n   DATABASE_URL=\"postgres://postgres:postgres@localhost:5432/helpdesk?schema=public\"\n   JWT_SECRET=\"sua_chave_secreta\"\n   PORT=3333\n   ADMIN_PASSWORD=\"sua_senha_de_admin\"\n   \n4. **Suba o banco de dados com Docker**\n   ```bash\n   docker-compose up -d\n   ```\n   ou\n   ```bash\n   docker compose up -d\n\n5. **Execute as migrations e as seeds do Prisma:**\n   ```bash\n   npx prisma migrate deploy\n   npx prisma db seed\n\n6. **Rode o servidor em modo desenvolvimento:**\n   ```bash\n   npm run dev\n  \n\u003e O servidor estará disponível em [http://localhost:3333](http://localhost:3333).\n\n\u003cbr\u003e\n\n## 🧪 Rodando os testes\n\n```bash\nnpm run test:dev\n```\n\n\u003cbr\u003e\n\n## 📚 Endpoints\n\n### SignUp\n\n- **POST /users**  \n   Cria conta de usuário\n\n### SignIn\n\n- **POST /sessions**  \n   Realiza login e retorna o token JWT.\n\n### Horários\n\n- **GET /times**\n   Lista todos os horários disponíveis para atribuir a um técnico.\n   (Requer autenticação JWT, somente admin)\n\n### Técnicos\n\n- **GET /technicians**\n   Lista todos os técnicos e seus horários.\n   (Requer autenticação JWT, somente admin)\n\n- **POST /technicians**\n   Cria um novo técnico.\n   (Requer autenticação JWT, somente admin)\n\n- **PUT /technicians/:id**\n   Atualiza dados e horários de um técnico.\n   (Requer autenticação JWT, somente admin)\n\n### Serviços\n\n- **GET /services**\n   Lista todos os serviços disponíveis.\n   (Requer autenticação JWT)\n\n- **POST /services**\n   Cria um novo serviço.\n   (Requer autenticação JWT, somente admin)\n\n- **POST /services/additional/:ticketId**\n   adiciona um serviço adicional para um chamado se for necessário.\n   (Requer autenticação JWT, somente técnico responsável pelo chamado)\n\n- **PUT /services/:id**\n   Atualiza as informações de um serviço.\n   (Requer autenticação JWT, somente admin)\n\n- **PATCH /services/:id**\n   Atualiza o status de um serviço.\n   (Requer autenticação JWT, somente admin)\n\n- **DELETE /services/additional/delete/:ticketId/:serviceId**\n   deleta um serviço adicional de um chamado.\n   (Requer autenticação JWT, somente técnico responsável pelo chamado)\n\n### Clientes\n\n- **GET /customers**\n   Lista todos os clientes.\n   (Requer autenticação JWT, somente admin)\n\n- **PUT /customers/:id**\n   Atualiza os dados de um cliente.\n   (Requer autenticação JWT, somente admin)\n\n- **DELETE /customers/:id**\n   Deleta a conta um cliente.\n   (Requer autenticação JWT, somente admin e cliente responsável pela conta)\n\n### Chamados\n\n- **GET /tickets**\n   Lista todos os chamados.\n   (Requer autenticação JWT)\n\n- **GET /tickets/:id**\n   Detalha um chamado específico.\n   (Requer autenticação JWT)\n\n- **POST /tickets**\n   Cria um novo chamado.\n   (Requer autenticação JWT, somente cliente)\n\n- **PATCH /tickets/:id**\n   Atualiza o status de um chamado.\n   (Requer autenticação JWT, somente admin e técnico responsável pelo chamado)\n\n### Usuários\n\n- **GET /profile/:id**\n   Lista os dados da conta de usuário.\n   (Requer autenticação JWT, somente técnico e cliente responsáveis pela conta)\n\n- **PUT /profile/:id**\n   Atualiza os dados da conta de usuário.\n   (Requer autenticação JWT, somente técnico e cliente responsáveis pela conta)\n\n- **PATCH /profile/:id**\n   Atualiza a senha da conta de usuário\n   (Requer autenticação JWT, somente técnico e cliente responsáveis pela conta)\n\n### Upload de Foto de Perfil\n\n- **GET /uploads**\n   Lista foto de perfil\n   (Requer autenticação JWT)\n\n- **POST /uploads/:id**\n   Faz upload de foto de perfil e a atualiza logo em seguida\n   (Requer autenticação JWT, somente técnico e cliente responsáveis pela conta)\n\n\u003cbr\u003e\n\n## 👨‍💻 Desenvolvedor do Projeto\n\n- Rafael Roberto de Oliveira\n\n\u003cbr\u003e\n\n## 💡 Contribuidor\n\n- [Gabriel José de Oliveira](https://github.com/gaoliveira21)\n\n\u003cbr\u003e\n\n## 📄 Licença\n\nEste projeto está sob a licença MIT.\n\n\u003cbr\u003e\n\n\u003e Feito com ♥ by Rocketseat :wave: [Participe da nossa comunidade!](https://discord.gg/rocketseat)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffel1324%2Fhelpdeskapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffel1324%2Fhelpdeskapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffel1324%2Fhelpdeskapi/lists"}