An open API service indexing awesome lists of open source software.

https://github.com/renyzeraa/feedback-widget-server

APIRESTFull para receber relatórios de widget onde vem bugs, idéias ou outros assuntos, feito em Node.js com testes em Jest
https://github.com/renyzeraa/feedback-widget-server

cors docker fastify javascript jest jest-tests nodejs postgresql typescript

Last synced: about 2 months ago
JSON representation

APIRESTFull para receber relatórios de widget onde vem bugs, idéias ou outros assuntos, feito em Node.js com testes em Jest

Awesome Lists containing this project

README

          

# Widget de Feedback - Servidor 📥

Uma API RESTful construída com Node.js seguindo os princípios SOLID para coletar e gerenciar feedback de usuários.

[Repositório do Frontend](https://github.com/renyzeraa/feedback-widget-web)

## 🚀 Tecnologias

- [Node.js](https://nodejs.org/)
- [TypeScript](https://www.typescriptlang.org/)
- [Fastify](https://www.fastify.io/)
- [Prisma](https://www.prisma.io/)
- [PostgreSQL](https://www.postgresql.org/)
- [Nodemailer](https://nodemailer.com/)
- [Jest](https://jestjs.io/)
- [Zod](https://zod.dev/)

## 📋 Funcionalidades

- Envio de feedback (BUG, IDEIA, OUTRO)
- Notificações por email
- Anexos de screenshots
- Validação de entrada
- Tratamento de erros
- Testes unitários

## 🏗️ Arquitetura

O projeto segue os princípios SOLID e Clean Architecture:

- **Controllers**: Manipulam requisições/respostas HTTP
- **Casos de Uso**: Contêm a lógica de negócios
- **Repositórios**: Camada de acesso a dados
- **Entidades**: Modelos de domínio
- **Adaptadores**: Integração com serviços externos (email)

## 💻 Começando

### Pré-requisitos

- Node.js
- Docker
- Docker Compose

### Instalação

1. Clone o repositório:

```bash
git clone https://github.com/seuusuario/feedback-widget-server.git
```

2. Instale as dependências:

```bash
npm install
```

3. Crie o arquivo de ambiente:

```bash
cp .env.example .env
```

4. Inicie o banco de dados PostgreSQL:

```bash
docker-compose up -d
```

5. Execute as migrações:

```bash
npx prisma migrate dev
```

6. Na base do projeto possui a collection para realizar requisições pelo postman.

### Executando

Modo desenvolvimento:

```bash
npm run dev
```

Build de produção:

```bash
npm run build
npm start
```

Testes:

```bash
npm run test
```

## 📝 Documentação da API

### Enviar Feedback

```http
POST /api/v1/feedbacks
```

Corpo da requisição:

```json
{
"type": "BUG", // BUG, IDEIA, OUTRO
"comment": "Algo não está funcionando",
"screenshot": "data:image/png;base64,..." // opcional
}
```

## 🧪 Testes

O projeto inclui testes unitários para os principais casos de uso utilizando Jest:

- Validação de envio de feedback
- Envio de email
- Validação de screenshot
- Tratamento de erros

## 📦 Variáveis de Ambiente

- `DATABASE_URL`: String de conexão PostgreSQL
- `PORT`: Porta do servidor (padrão: 3333)
- `NODE_ENV`: Ambiente (dev, test, production)

## 🛠️ Construído com Princípios SOLID

- Princípio da **R**esponsabilidade Única
- Princípio **A**berto/Fechado
- Princípio da **S**ubstituição de Liskov
- Princípio da **S**egregação de Interface
- Princípio da **I**nversão de Dependência

---

Se você tiver alguma dúvida ou sugestão, entre em contato e sinta-se à vontade para contribuir !

Feito por [Renan L. Silva](https://github.com/renyzeraa)!

🛠 Dev. FullStack

📍 Santa Catarina - Brasil

LinkedIn Badge 
Gmail Badge 
Discord Badge 
GitHub Badge