Excelente análise — está bem acima da média e, no geral, os números fazem sentido 👍 Dito isso, há algumas inconsistências, premissas otimistas demais e pontos que eu ajustaria para evitar surpresas quando sair do free tier. Vou separar em ✔️ corretos, ⚠️ atenção, e ❌ inconsistências reais.
✔️ O que está sólido e bem modelado
1. Visão sistêmica de custos
- A decomposição por perfil de usuário (light / regular / heavy) é correta.
- Os drivers principais (Maps, Firestore writes, Functions) estão bem identificados.
- O uso de cache + throttling + flags é exatamente o que mantém Firebase barato.
👉 Isso mostra maturidade de arquitetura.
2. Firebase Auth
✔️ Correto
- Email/password + Google OAuth são realmente $0.
- Sem SMS → zero risco aqui.
3. Cloud Functions
✔️ Correto em escala pequena e média
- 2M invocações é bastante coisa.
- Funções curtas (~100–200ms) com 256MB são baratas.
⚠️ Apenas um detalhe:
Cold start não impacta custo diretamente, mas pode aumentar duração → GB-seconds. Não é um problema agora, só monitorar.
4. Remote Config, Hosting, AdMob
✔️ Correto
- Remote Config é praticamente ilimitado.
- Hosting só vira custo com tráfego alto.
- AdMob corretamente tratado como receita, não custo.
⚠️ Pontos que estão certos, mas otimistas
Aqui não estão “errados”, mas assumem uso perfeito e disciplinado.
⚠️ Firestore — escritas durante execução de rota
Problema:
Você assume:
“Atualizações de posição a cada 30s por 30min = ~60 writes”
Na prática:
-
Motorista pode:
-
Pausar / retomar rota
- Ficar offline / online
- Gerar writes duplicados por retry
- App em background pode disparar eventos extras
📌 Risco real: +20–40% de writes sem perceber.
✅ Mitigação (já citada, mas eu elevaria prioridade):
- Throttling por distância (>50–100m) além de tempo
- Debounce defensivo no client
- Write only if
distanceFromLastPoint > X
👉 Eu colocaria um buffer mental de +30% nas writes.
⚠️ Firestore Free Tier “por usuário”
O documento faz algo comum, mas perigoso:
“Heavy user custa X → suporta Y heavy users”
📌 O free tier é global por projeto, não linear por usuário.
Se você tiver:
- 200 heavy users concentrados nos mesmos horários
- Muitos motoristas rodando de manhã e à tarde
Você pode:
- Estourar writes diárias (20k/day) antes do mês acabar
👉 O modelo mensal está correto, 👉 Mas o limite diário é o verdadeiro gargalo.
🔎 Exemplo:
- 200 heavy users × 60 writes/rota × 2 rotas/dia = 24.000 writes/dia ❌
Isso estoura o free tier mesmo que o mês ainda esteja ok.
⚠️ Google Maps Directions API
A conta está correta se o cache funcionar perfeitamente.
Mas:
- Mudança mínima de rota
- Ajuste de waypoint
- Alteração manual do motorista
➡️ tudo isso invalida cache.
📌 Eu consideraria:
- Cache efetivo mais conservador: 60%, não 70–80%.
Ainda é bom, só não tão perfeito quanto o texto sugere.
❌ Inconsistências reais (essas eu ajustaria)
❌ 1. Batch no Firestore “conta como 1 escrita”
dart await batch.commit(); // Conta como 1 escrita
🚨 Isso está errado.
No Firestore:
- Cada documento em um batch conta como uma escrita
-
O batch só reduz:
-
Latência
- Risco de partial failure
- Não reduz custo
📌 Correção no documento:
Batch melhora performance e atomicidade, não custo direto.
❌ 2. Realtime Database “mais barato para escritas frequentes”
Isso é meia verdade.
✔️ Vantagem:
- Melhor para streaming
- Latência menor
- Modelo push eficiente
❌ Mas:
- Custo é por GB transferido, não por operação
- Payloads grandes ou frequentes podem sair mais caros
- Regras menos expressivas que Firestore
📌 Correção conceitual:
Realtime DB é melhor para telemetria volátil, não necessariamente mais barato sempre.
❌ 3. Storage: downloads legais “alto”
“cada usuário baixa termos na primeira sessão”
Na prática:
- Muitos usuários não baixam PDF
- Termos costumam ser exibidos inline (Hosting ou WebView)
📌 Storage download provavelmente está superestimado, não subestimado.
❌ 4. Projeção anual “$45/ano”
Isso só se mantém se:
- Crescimento for suave
- Heavy users não dominarem a base
- Não houver bug de loop de writes
📌 Eu colocaria:
- Orçamento psicológico mínimo: $10–20/mês a partir de ~1.500 usuários
- Mesmo que o cálculo diga menos
Ajustes que eu faria no documento
🔧 Ajustes rápidos
- Corrigir trecho do batch
- Adicionar alerta explícito:
“Free tier é limitado por dia, não só por mês” 3. Reduzir expectativa de cache do Maps para 60% 4. Colocar buffer de +30% nas writes de execução
Veredito final 🎯
Minha avaliação honesta:
| Aspecto | Nota |
|---|---|
| Arquitetura | ⭐⭐⭐⭐⭐ |
| Modelo de custos | ⭐⭐⭐⭐☆ |
| Realismo operacional | ⭐⭐⭐⭐☆ |
| Risco oculto | ⭐⭐⭐☆☆ |
👉 É viável, bem pensado e defensável 👉 Não está “vendendo ilusão” 👉 Só precisa ajustar algumas afirmações absolutas
Se quiser, posso:
- Revisar isso como documento oficial para investidor
- Transformar em checklist técnico de monitoramento
- Simular cenário de bug (loop de writes) e impacto real
Você está no caminho certo — isso é projeto de gente experiente, não MVP amador.