Este projeto é uma solução desenvolvida para a segunda etapa do processo seletivo da vaga de Desenvolvedor Backend no NUVEN – Núcleo de visão computacional e engenharia.
A proposta é criar uma API RESTful que simula o backend de uma plataforma para ingestão e gerenciamento de documentos. Entre as funcionalidades estão:
- Autenticação com JWT
- Upload de arquivos
.csve.pdf - Busca textual dentro dos dados enviados
- Consulta simulada com IA (via Hugging Face)
- Persistência em PostgreSQL com Prisma
- 📥 Fluxo de Requisição
- 🧰 Tecnologias Utilizadas
- 📁 Estrutura de Pastas
- ⚙️ Configuração do Ambiente
- 📚 Como Usar a API
- ✅ Testes Automatizados
- 🔗 Endpoints da API
Abaixo está o fluxo típico de uma requisição de upload (POST /datasets/upload), que passa por autenticação, middleware, upload e persistência:
- Node.js + Express
- PostgreSQL com Prisma ORM
- JWT para autenticação
- Multer para upload de arquivos
- Vitest + Supertest para testes automatizados
- Docker + Docker Compose
- Swagger UI para documentação da API
- Hugging Face Inference API (IA simulada — opcional)
api/
├── prisma/ # Schema e migrations do Prisma
├── src/
│ ├── config/ # Configurações globais (ex: Swagger)
│ ├── controllers/ # Lógica de negócio
│ ├── middlewares/ # Middlewares (como auth)
│ ├── routes/ # Arquivos de rotas
│ └── uploads/ # Arquivos temporários de upload
├── tests/ # Testes automatizados
├── .env # Variáveis de ambiente (não versionado)
├── Dockerfile
└── docker-compose.yml- Git
- Docker + Docker Compose
git clone https://github.com/IsequielNascimento/nuven_desafio_backend.git
cd nuven_desafio_backendConfigure as variáveis de ambiente:
cd api
npm iCrie na pasta API e Preencha as variáveis .env:
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/backend"
JWT_SECRET="sua_chave_jwt"
HF_TOKEN="seu_token_huggingface"Depois, volte para a raiz:
cd..e rode:
# Na raiz do projeto
docker-compose up -d dbAplique as Migrações: Crie as tabelas no banco de dados
# Dentro da pasta api/
npx prisma migrate devExecute os Testes:
# Dentro da pasta api/
npm testSuba os containers: Na pasta raiz do projeto, execute:
docker-compose up --buildA API estará acessível em:
👉 http://localhost:3000
👉 Documentação Swagger: http://localhost:3000/docs
A API pode ser testada diretamente pela interface Swagger gerada automaticamente:
📄 Acesse: http://localhost:3000/docs
Use os endpoints com um token JWT válido gerado via /auth/login.
Testes com Vitest e Supertest cobrem o fluxo de autenticação:
cd api
npm install
npm test| Método | Rota | Descrição | Auth |
|---|---|---|---|
| POST | /auth/register |
Cria um novo usuário | ❌ |
| POST | /auth/login |
Retorna token JWT após login | ❌ |
| GET | /me |
Retorna dados do usuário autenticado | ✅ |
| POST | /datasets/upload |
Faz upload de CSV ou PDF | ✅ |
| GET | /datasets |
Lista os datasets do usuário | ✅ |
| GET | /datasets/:id/records |
Lista registros de um dataset | ✅ |
| GET | /records/search |
Busca textual nos registros do usuário | ✅ |
| POST | /queries |
Envia pergunta à IA e registra a resposta | ✅ |
| GET | /queries |
Lista consultas anteriores feitas pelo usuário | ✅ |
| POST | /ai/query |
(opcional) Consulta IA via Hugging Face | ✅ |