{"id":27311721,"url":"https://github.com/renyzeraa/feedback-widget-server","last_synced_at":"2026-04-11T05:31:38.607Z","repository":{"id":287489382,"uuid":"964904503","full_name":"renyzeraa/feedback-widget-server","owner":"renyzeraa","description":"APIRESTFull para receber relatórios de widget onde vem bugs, idéias ou outros assuntos, feito em Node.js com testes em Jest","archived":false,"fork":false,"pushed_at":"2025-04-12T02:22:13.000Z","size":83,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T03:25:07.966Z","etag":null,"topics":["cors","docker","fastify","javascript","jest","jest-tests","nodejs","postgresql","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/renyzeraa.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-04-12T02:09:51.000Z","updated_at":"2025-04-12T02:22:16.000Z","dependencies_parsed_at":"2025-04-12T03:25:16.571Z","dependency_job_id":"eb593e25-8dc6-4566-94ab-715d79413aac","html_url":"https://github.com/renyzeraa/feedback-widget-server","commit_stats":null,"previous_names":["renyzeraa/feedback-widget-server"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/renyzeraa%2Ffeedback-widget-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/renyzeraa%2Ffeedback-widget-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/renyzeraa%2Ffeedback-widget-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/renyzeraa%2Ffeedback-widget-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/renyzeraa","download_url":"https://codeload.github.com/renyzeraa/feedback-widget-server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248530188,"owners_count":21119586,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cors","docker","fastify","javascript","jest","jest-tests","nodejs","postgresql","typescript"],"created_at":"2025-04-12T06:33:19.017Z","updated_at":"2025-12-30T20:22:17.939Z","avatar_url":"https://github.com/renyzeraa.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Widget de Feedback - Servidor 📥\n\nUma API RESTful construída com Node.js seguindo os princípios SOLID para coletar e gerenciar feedback de usuários.\n\n[Repositório do Frontend](https://github.com/renyzeraa/feedback-widget-web)\n\n## 🚀 Tecnologias\n\n- [Node.js](https://nodejs.org/)\n- [TypeScript](https://www.typescriptlang.org/)\n- [Fastify](https://www.fastify.io/)\n- [Prisma](https://www.prisma.io/)\n- [PostgreSQL](https://www.postgresql.org/)\n- [Nodemailer](https://nodemailer.com/)\n- [Jest](https://jestjs.io/)\n- [Zod](https://zod.dev/)\n\n## 📋 Funcionalidades\n\n- Envio de feedback (BUG, IDEIA, OUTRO)\n- Notificações por email\n- Anexos de screenshots\n- Validação de entrada\n- Tratamento de erros\n- Testes unitários\n\n## 🏗️ Arquitetura\n\nO projeto segue os princípios SOLID e Clean Architecture:\n\n- **Controllers**: Manipulam requisições/respostas HTTP\n- **Casos de Uso**: Contêm a lógica de negócios\n- **Repositórios**: Camada de acesso a dados\n- **Entidades**: Modelos de domínio\n- **Adaptadores**: Integração com serviços externos (email)\n\n## 💻 Começando\n\n### Pré-requisitos\n\n- Node.js\n- Docker\n- Docker Compose\n\n### Instalação\n\n1. Clone o repositório:\n\n```bash\ngit clone https://github.com/seuusuario/feedback-widget-server.git\n```\n\n2. Instale as dependências:\n\n```bash\nnpm install\n```\n\n3. Crie o arquivo de ambiente:\n\n```bash\ncp .env.example .env\n```\n\n4. Inicie o banco de dados PostgreSQL:\n\n```bash\ndocker-compose up -d\n```\n\n5. Execute as migrações:\n\n```bash\nnpx prisma migrate dev\n```\n\n6. Na base do projeto possui a collection para realizar requisições pelo postman.\n\n### Executando\n\nModo desenvolvimento:\n\n```bash\nnpm run dev\n```\n\nBuild de produção:\n\n```bash\nnpm run build\nnpm start\n```\n\nTestes:\n\n```bash\nnpm run test\n```\n\n## 📝 Documentação da API\n\n### Enviar Feedback\n\n```http\nPOST /api/v1/feedbacks\n```\n\nCorpo da requisição:\n\n```json\n{\n  \"type\": \"BUG\", // BUG, IDEIA, OUTRO\n  \"comment\": \"Algo não está funcionando\",\n  \"screenshot\": \"data:image/png;base64,...\" // opcional\n}\n```\n\n## 🧪 Testes\n\nO projeto inclui testes unitários para os principais casos de uso utilizando Jest:\n\n- Validação de envio de feedback\n- Envio de email\n- Validação de screenshot\n- Tratamento de erros\n\n## 📦 Variáveis de Ambiente\n\n- `DATABASE_URL`: String de conexão PostgreSQL\n- `PORT`: Porta do servidor (padrão: 3333)\n- `NODE_ENV`: Ambiente (dev, test, production)\n\n## 🛠️ Construído com Princípios SOLID\n\n- Princípio da **R**esponsabilidade Única\n- Princípio **A**berto/Fechado\n- Princípio da **S**ubstituição de Liskov\n- Princípio da **S**egregação de Interface\n- Princípio da **I**nversão de Dependência\n\n---\n\nSe você tiver alguma dúvida ou sugestão, entre em contato e sinta-se à vontade para contribuir !\n\n\u003cimg align=\"left\" src=\"https://avatars.githubusercontent.com/renyzeraa?size=100\"\u003e\n\nFeito por [Renan L. Silva](https://github.com/renyzeraa)! \u003cbr\u003e\n🛠 Dev. FullStack \u003cbr\u003e\n📍 Santa Catarina - Brasil \u003cbr\u003e\n\n\u003ca href=\"https://www.linkedin.com/in/renyzeraa\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/LinkedIn-0077B5?style=flat\u0026logo=linkedin\u0026logoColor=white\" alt=\"LinkedIn Badge\" height=\"20\"\u003e\u003c/a\u003e\u0026nbsp;\n\u003ca href=\"mailto:renansilvaytb@gmail.com\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/Gmail-D14836?style=flat\u0026logo=gmail\u0026logoColor=white\" alt=\"Gmail Badge\" height=\"20\"\u003e\u003c/a\u003e\u0026nbsp;\n\u003ca href=\"#\"\u003e\u003cimg src=\"https://img.shields.io/badge/Discord-%237289DA.svg?logo=discord\u0026logoColor=white\" title=\"renan_s#7826\" alt=\"Discord Badge\" height=\"20\"\u003e\u003c/a\u003e\u0026nbsp;\n\u003ca href=\"https://www.github.com/renyzeraa\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/GitHub-100000?style=flat\u0026logo=github\u0026logoColor=white\" alt=\"GitHub Badge\" height=\"20\"\u003e\u003c/a\u003e\u0026nbsp;\n\n\u003cbr clear=\"left\"/\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frenyzeraa%2Ffeedback-widget-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frenyzeraa%2Ffeedback-widget-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frenyzeraa%2Ffeedback-widget-server/lists"}