Status: Documentação arquitetural em progresso
Stack planejada: Node.js + TypeScript + PostgreSQL + Redis + RabbitMQ
Licença: MIT
Plataforma de delivery estilo iFood, estruturada como um ecossistema de três frentes interligadas em tempo real — cliente, restaurante e entregador — orquestrados por um painel administrativo central.
O projeto está em fase de documentação arquitetural. Todos os 16 domínios estão completos com system designs detalhados (modelo de dados, fluxos, contratos, ADRs, riscos), além de documentos transversais consolidados e scripts de migração do banco de dados.
| Documento | Status |
|---|---|
| 16 System Designs (00–15) | ✅ Completos (~19 seções cada) |
| ADRs consolidados | ✅ docs/adr.md (67 decisões arquiteturais) |
| Arquitetura de dados transversal | ✅ docs/data-architecture.md (9 seções) |
| Diagrama ER global | ✅ docs/data-model/schema.dbml (64 tabelas, 90 refs) |
| Glossário do projeto | ✅ docs/glossario.md (200+ termos A-Z) |
| Especificação OpenAPI/Swagger | ✅ docs/openapi.yaml + HTML viewer |
| Migrações SQL versionadas | ✅ docs/migrations/ (Flyway) |
| Roteiro (roadmap) e dependências | ✅ docs/roadmap/ |
✅ ~96% do checklist de documentação concluído — detalhes em
docs/improvements-checklist.md
FastFoodDelivery/
│
├── docs/ # Documentação completa
│ ├── adr.md # ADRs consolidadas (67 decisões)
│ ├── architecture/ # System designs por domínio
│ │ ├── 00-plataforma-transversal/
│ │ ├── 01-identidade-usuarios/
│ │ ├── ...
│ │ ├── 15-cupons-campanhas/
│ │ ├── architecture-overview.mermaid
│ │ └── class-diagram-global.puml
│ ├── data-architecture.md # Fluxo de dados entre serviços
│ ├── data-model/ # ER global + schema SQL + dependências
│ ├── epic-ifood-clone.md # Requisitos do produto
│ ├── glossario.md # 200+ termos A-Z
│ ├── improvements-checklist.md # Checklist de qualidade
│ ├── migrations/ # Migrações Flyway versionadas
│ │ ├── V1__Initial_Schema.sql
│ │ └── V2__Seed_Data.sql
│ ├── README.md # Índice central
│ ├── roadmap/ # Ordem das jornadas e dependências
│ ├── rollback/ # Scripts de reversão
│ ├── templates/ # Template de system design
│ └── openapi.yaml # Especificação OpenAPI/Swagger
│
├── scripts/ # Scripts utilitários
│ └── sql-to-dbml.py # Geração automática de docs
├── LICENSE
└── README.md # ← Você está aqui
| # | Domínio | Jornada | Fase |
|---|---|---|---|
| 00 | Plataforma Transversal | RNF | 0 |
| 01 | Identidade e Usuários | Cliente | 0 |
| 02 | Onboarding Admin | Admin | 1 |
| 03 | Gestão de Cardápio | Restaurante | 1 |
| 04 | Geolocalização e Cobertura | Cliente | 2 |
| 05 | Busca e Filtros | Cliente | 2 |
| 06 | Carrinho e Pedido | Cliente | 2 |
| 07 | Pagamentos | Cliente | 3 |
| 08 | Estados do Pedido | Restaurante | 3 |
| 09 | Matching Entregador | Entregador | 4 |
| 10 | Roteirização e Localização | Entregador | 4 |
| 11 | Rastreamento Tempo Real | Cliente | 4 |
| 12 | Confirmação de Entrega | Entregador | 4 |
| 13 | Avaliações | Cliente | 5 |
| 14 | Painel Financeiro | Restaurante | 5 |
| 15 | Cupons e Campanhas | Admin | 5 |
Detalhes das fases e dependências:
docs/roadmap/ordem-das-jornadas.md
Arquitetura orientada a eventos (EDA) com serviços desacoplados via Event Bus (RabbitMQ MVP, Kafka em escala).
| Camada | Componente | Função |
|---|---|---|
| Gateway | Kong (MVP) | Roteamento, rate limiting, validação JWT local |
| Serviços | Auth, User, Order, Payment, Dispatch, Tracking | Domínios independentes e stateless |
| Cache | Redis | OTP, rate limit, sessões, cardápio, geolocalização |
| Banco | PostgreSQL único (schemas separados) | Persistência transacional + read replica |
| Mensageria | RabbitMQ -> Kafka (futuro) | Eventos assíncronos com DLQ e reprocessamento |
| Busca | Elasticsearch | Full-text, geo_distance, ranking e autocomplete |
- Validação JWT local no gateway sem round-trip ao Auth Service
- Separação lógica de domínios em schemas PostgreSQL, com evolução para bancos independentes
- Integração assíncrona via eventos para desacoplamento entre serviços
- Cache-aside com Redis e invalidação por evento para dados quentes
- Offline-first parcial no app do entregador (SQLite local, sync em batch)
- Cadastro e Login — registro com Argon2id, refresh token rotativo, OTP
- Onboarding — KYC de restaurantes e entregadores com SLA de 48h
- Cardápio — criação, versionamento (snapshots) e publicação em tempo real
- Busca — full-text com Elasticsearch, boosting por rating, fallback PostgreSQL
- Carrinho e Pedido — lock atômico de estoque, idempotência, snapshot de preços
- Pagamento — Pix (QR dinâmico), cartão tokenizado (PCI-DSS out of scope)
- Matching — oferta por georádio, aceite atômico (Lua no Redis), escalonamento
- Rastreamento — WebSocket com heartbeat, fallback para polling REST
- Confirmação — código OTP com hash SHA-256, disputas com evidências
- Financeiro — ledger append-only, rollups diários, repasse D+7
| Requisito | Alvo |
|---|---|
| Disponibilidade | 99.99% (four nines) |
| Latência busca | < 200ms p95 |
| Latência login | < 250ms p95 |
| Latência leitura perfil | < 120ms p95 |
| Escala inicial | 1M usuários |
| Pico esperado | 2k RPS |
| Segurança | TLS 1.3, Argon2id, LGPD, PCI-DSS |
docs/README.md— Índice completo da documentaçãodocs/epic-ifood-clone.md— Visão do produto e requisitosdocs/roadmap/ordem-das-jornadas.md— Ordem de desenho e dependênciasdocs/architecture/00-plataforma-transversal/system-design.md— Fundação transversaldocs/data-model/er-viewer.html— 🗄️ Visualizador ER interativo do schema (abrir no navegador)
Este projeto está licenciado sob a MIT License.
Copyright (c) 2026 Fernando Flores Terceros