API de plataforma de delivery desenvolvida com foco em qualidade de software (QA), cobrindo testes de integração, documentação de bugs e validação de fluxos críticos.
Esta API simula um ambiente de produção com múltiplas entidades, autenticação JWT, uploads, cache, logs e banco de dados real. Isso permite:
- Criar cenários de teste complexos e completos
- Validar fluxos críticos ponta a ponta
- Documentar bugs reais encontrados durante o desenvolvimento
- Aplicar testes automatizados de integração
- Demonstrar pensamento analítico e visão de qualidade
O sistema simula uma plataforma de delivery completa, permitindo testar e validar:
- 🔐 Autenticação e autorização (JWT)
- 👤 Gestão de usuários
- 🏪 Cadastro de estabelecimentos e produtos
- 📦 Fluxo completo de pedidos
- 📁 Upload e tratamento de arquivos (Multer)
- 📍 Endereços múltiplos por usuário
⚠️ Validações, erros e cenários de borda
Este projeto foi estruturado para demonstrar práticas reais de QA em uma API REST:
| Prática | Status |
|---|---|
| Testes de integração (Jest + Supertest) | ✅ Implementado |
| Banco isolado por teste (MongoMemoryServer) | ✅ Implementado |
| Factories de dados de teste | ✅ Implementado |
| Bug reports documentados | ✅ Implementado |
| Casos de teste em markdown | ✅ Implementado |
| Estratégia de testes definida | ✅ Implementado |
| Collection Postman | ✅ Implementado |
| CI/CD (GitHub Actions) | 🔜 Em breve |
tests/
├── factories/
│ └── UserFactory.ts # Geração de dados de teste
├── helpers/
│ └── app.ts # Configuração compartilhada
├── integration/
│ └── auth/
│ ├── login.test.ts
│ └── signup.test.ts
└── setup.ts
# Rodar todos os testes
npm test
# Modo watch (desenvolvimento)
npm run test:watch
# Com relatório de cobertura
npm run test:covO projeto inclui uma collection completa para validação manual dos endpoints.
postman/rangos_collection.json
A documentação de qualidade está organizada em docs/qa/:
| Documento | Descrição |
|---|---|
| Estratégia de Testes | Abordagem, tipos de teste e critérios |
| Casos de Teste — Auth | Cenários de autenticação |
| Bug Backlog | Lista de bugs encontrados |
| BUG-001 — Validação de Email | Bug report detalhado |
| Documento | Descrição |
|---|---|
| API Reference | Referência completa dos endpoints |
| Auth Guide | Guia de autenticação JWT |
| Models | Schemas e modelos de dados |
| Errors | Códigos de erro e descrições |
| Código | Descrição |
|---|---|
| 400 | Requisição inválida |
| 401 | Não autorizado |
| 404 | Não encontrado |
| 413 | Payload muito grande |
| 500 | Erro interno |
- Testes de autenticação (login e cadastro)
- Estratégia de testes
- Collection do Postman
- Backlog de bugs
- Testes de integração dos demais módulos
- Relatórios de cobertura
- Pipeline de CI/CD
- Testes de performance (k6)
- Testes de contrato (OpenAPI)
src/
├── api/ # Ponto de entrada da API
├── config/ # Configurações globais (database, env, logger)
├── controllers/ # Processamento de requisições e respostas
├── errors/ # Classes de erro customizadas
├── middlewares/ # Autenticação, validações e tratamento de erros
├── models/ # Schemas Mongoose
├── routes/ # Definição de rotas e endpoints
└── app.ts # Inicialização da aplicação
- Node.js 18+
- npm 8+
- MongoDB
- Redis
- Git
- Docker
- Docker Compose
Ao utilizar Docker, não é necessário instalar Node.js, MongoDB ou Redis localmente.
git clone https://github.com/Dienay/rangos-api.git
cd rangos-api
npm install
cp .env.example .envNODE_ENV=development
PORT=3000
MONGO_URL=mongodb://rangos-mongo:27017/rangos
REDIS_URL=redis://rangos-redis-server:6379
JWT_SECRET=seu_segredo_aquiO projeto pode ser executado com Docker usando o script run.sh.
# Permissão de execução (apenas na primeira vez)
chmod +x run.sh
# Comandos disponíveis
./run.sh up # Inicia os containers
./run.sh build # Build dos containers
./run.sh rebuild # Build + start
./run.sh rebuild:force # Rebuild forçado
./run.sh down # Remove containers
./run.sh stop # Para containers
./run.sh restart # Reinicia containers
./run.sh logs # Logs em tempo real
./run.sh ps # Lista containersEste projeto está licenciado sob a Licença MIT.