Skip to content

Dienay/rangos-api

Repository files navigation

🚀 Rangos API

Sobre o projeto

A Rangos API simula um ambiente de produção com autenticação JWT, múltiplas entidades relacionadas, upload de arquivos, cache Redis e logs estruturados. Esse contexto permitiu exercitar QA em cenários próximos do real — incluindo 11 bugs encontrados durante a análise do código, 3 deles críticos de segurança por ausência de autenticação em módulos inteiros.


🛠️ Tecnologias & Ferramentas

Backend

Node.js TypeScript MongoDB Redis Docker

QA & Testes

Jest Supertest Postman


🧠 Visão Geral

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

🎯 Foco em Qualidade de Software

Este projeto foi estruturado para demonstrar práticas reais de QA em uma API REST:

Prática Status
Testes de integração (Jest + Supertest) ✅ Auth completo
Banco isolado por teste (MongoMemoryServer)
Factories de dados de teste
Estratégia de testes documentada
Casos de teste documentados ✅ 122 casos · 6 módulos
Bug reports documentados ✅ 11 bugs · 3 críticos
Collection Postman
Testes dos demais módulos 🔜 Em andamento
CI/CD (GitHub Actions) 🔜 Planejado

🧪 Testes

Estrutura

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

Como rodar

# Rodar todos os testes
npm test

# Modo watch (desenvolvimento)
npm run test:watch

# Com relatório de cobertura
npm run test:cov

Collection Postman

O projeto inclui uma collection completa para validação manual dos endpoints.

postman/rangos_collection.json

📋 Documentação QA

A documentação de qualidade está organizada em docs/qa/:

Documento Descrição
Estratégia de Testes Abordagem, ferramentas e critérios
Casos de Teste — Auth 22 cenários · 9 bugs encontrados
Casos de Teste — Users 15 cenários
Casos de Teste — Addresses 17 cenários
Casos de Teste — Establishments 20 cenários
Casos de Teste — Products 21 cenários
Casos de Teste — Orders 27 cenários
Bug Backlog Índice de todos os bugs

📚 Documentação da API

Documento Descrição
Visão Geral Stack, arquitetura e limitações conhecidas
Modelos de Dados Schemas de todas as entidades
Auth Signup, login e uso do token
Users CRUD de usuários
Addresses Endereços de usuários e estabelecimentos
Establishments CRUD + busca + produtos
Products CRUD + top produtos com cache Redis
Orders Fluxo completo com máquina de estados

🗺️ Roadmap QA

  • Testes de integração — Auth
  • Estratégia de testes
  • Collection do Postman
  • Backlog de bugs
  • Casos de teste — todos os módulos (122 casos)
  • Bug reports documentados (11 bugs)
  • Testes de integração dos demais módulos
  • Testes automatizados — demais módulos
  • Relatórios de cobertura
  • Pipeline de CI/CD
  • Testes de performance (k6)
  • Testes de contrato (OpenAPI)

🏗️ Estrutura do Projeto

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

⚙️ Pré-requisitos

Execução local

  • Node.js 18+
  • npm 8+
  • MongoDB
  • Redis
  • Git

Execução com Docker

  • Docker
  • Docker Compose

Ao utilizar Docker, não é necessário instalar Node.js, MongoDB ou Redis localmente.


🚀 Instalação

git clone https://github.com/Dienay/rangos-api.git
cd rangos-api
npm install
cp .env.example .env

Variáveis de ambiente

NODE_ENV=development
PORT=3000
MONGO_URL=mongodb://rangos-mongo:27017/rangos
REDIS_URL=redis://rangos-redis-server:6379
JWT_SECRET=seu_segredo_aqui

🐳 Docker

O 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 containers

Licença

Este projeto está licenciado sob a Licença MIT.

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors