Skip to content

Dienay/rangos-api

Repository files navigation

🚀 Rangos API

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.


🛠️ Tecnologias & Ferramentas

Backend

Node.js TypeScript MongoDB Redis Docker

QA & Testes

Jest Supertest Postman


💡 Por que este projeto é relevante para QA?

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

🧠 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) ✅ 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

🧪 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, 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

📚 Documentação da API

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

⚠️ Tratamento de Erros

Código Descrição
400 Requisição inválida
401 Não autorizado
404 Não encontrado
413 Payload muito grande
500 Erro interno

🗺️ Roadmap QA

  • 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)

🏗️ 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