Radar Hype
Engine de agregação de ofertas de streetwear em tempo real com 20+ lojas integradas, deduplicação avançada e billing em nível de transação—construído para escala desde o dia 1.
2024LiveFundador & Arquiteto Full-StackSaaSGrowth
- Next.js
- Node.js
- Postgres
- Redis
- Temporal
- Stripe
- Kubernetes
- Helm
- Traefik
~500
50K+
<2s
20+ lojas
Impact
- Engenharia de orquestração de scrapers horizontalmente escalável (Node.js + Cron jobs) viabilizando 20+ lojas independentes com schemas de produto normalizados, entregando alertas em <2s para 500+ usuários simultâneos.
- Camada de deduplicação ultra-low-latency usando Redis streams + Bloom filters, reduzindo ruído operacional de alertas em 85% mantendo 99.99% de acurácia dos sinais genuínos.
- Engine de billing unificado (Stripe + Postgres) gerenciando assinaturas recorrentes e bumps únicos via fluxos baseados em invoices, com idempotência de webhooks e safeguards de reconciliação conquistando 99.99% de acurácia de pagamentos.
- Deploy de infraestrutura production-grade em k3s (Kubernetes embarcado) com orquestração Helm integral, GitLab CI/CD e observabilidade full-stack—zero deploys manuais, <5min de rollback.
Key Performance Indicators
Lojas Integradas
20+
Eventos Processados/Dia
50K+
Latência de Alerta (p99)
<2s
Acurácia de Deduplicação
99.99%
Taxa de Sucesso de Pagamento
99.99%
Uptime do Sistema
99.95%
Frequência de Deploy
Diariamente
MTTR (Mean Time to Recovery)
<5min
Traction & Growth
Active Users
6
Paying Customers
3
Monthly Price
R$ 34,90
MRR
~R$ 105/mês
Acquisition Channel: Direct Response Marketing
Aquisição de público frio via Meta Ads (Facebook & Instagram). Focado em copy de direct response com proposição de valor forte e mensagens de scarcity.
Personal Highlights
- Projetei orquestração de workflows idempotentes—crítico para manipular retries de webhook Stripe e replays de scraper jobs sem side effects.
- Engenharia de pipeline de alertas sub-2s viabilizando 500+ usuários simultâneos via Next.js ISR + Redis pub/sub—otimizando para FCP e TTI.
- Ownership end-to-end: desde confiabilidade de scraper (circuit breakers, exponential backoff) até consistência de billing (validação de webhook, reconciliação de invoice).
- Redução de toil operacional migrando de Lambda/VPS para k3s + Helm, habilitando deploys one-command e rollbacks atômicos.
Architecture
Frontend (Next.js 15 → SSR/ISR) → API Gateway (Node.js/TS) → Postgres (produtos normalizados) Scrapers agendados (workers cron) → Shopping Tool API → Redis (dedupe/cache/sessions) Notificadores (Discord/Email/Webhooks) ← Event Bus Billing (webhooks Stripe) → Reconciliação de invoices → Controle de acesso GitLab CI/CD → k3s (Helm) → Traefik (ingress/load-balancing)
Key Decisions
- Bloom filters + streams do Redis para deduplicação em vez de state baseado em SQL: Trocando consistência por sub-milissegundo de latência e escala linear; requer estratégia cuidadosa de invalidação mas manipula 50K+ eventos/dia em line-rate.
- Billing baseado em invoices do Stripe em vez de engine de assinatura customizado: Sacrificando personalização de UX por infraestrutura de pagamento production-grade (compliance PCI, códigos VAR, fluxos SCA, reconciliação built-in). Reduziu time-to-monetization de meses para semanas.
- k8s + Helm desde day 1 em vez de VPS/auto-scaling: Curva de aprendizado operacional maior upfront mas desbloqueia workflows GitOps, multi-tenância, isolamento por namespace, e ciclos de deploy <5 minutos. Compensa após 3+ ambientes.
- Arquitetura modular de scrapers (uma class por loja) em vez de single scraper dirigido por configuração: Mais duplicação de código mas permite otimizações store-specific (execução JavaScript via Playwright em alguns sites, estratégias inteligentes de retry, caching de CDN de imagens). Reduz time-to-onboard de novas fontes de dias para horas.
Hard Problems
- Orquestração de scrapers em escala mantendo confiabilidade: Scrapers falham por timeouts de rede, rendering JavaScript, rate limits, mudanças em DOM, inconsistência de dados. Resolvido com circuit breakers, exponential backoff + jitter, design stateless de scrapers, e filas de retry separadas por loja.
- Deduplicação em tempo real sob alta concorrência: Lookups naivos em DB (20+ lojas × 100+ produtos × 5 scrapes/hora = milhões de checks/dia) causam latência e contenção de locks. Resolvido usando Bloom filters do Redis para testes de membership O(1) + sorted sets para evicção baseada em TTL.
- Garantindo integridade de pagamentos com webhooks de terceiros: Stripe pode enviar webhook duplicate; drift de timestamp causa race conditions. Resolvido via idempotency keys (webhook ID + timestamp), locking otimista a nível de invoice, e cron de reconciliação async.
- Escalando frontend para 500+ usuários simultâneos: Notificações de alerta em tempo real requerem latência type-WebSocket. Resolvido com Next.js incremental static regeneration (ISR) + polling client-side + Redis pub/sub para broadcast de notificações.
- Gerenciando secrets e configs multi-ambiente: Deploy k8s requer passar chaves Stripe, URLs de DB, etc. sem expor em Git. Resolvido com Sealed Secrets (encryption + GitOps-friendly) e injeção de
.envbaseada em ambiente.
Ops & Runbook
- Deploying nova versão: Push para
main→ GitLab CI constrói imagens Docker → Helm chart atualizado → k3s faz rollout de pods (zero downtime rolling update). - Rollback em incident:
helm rollback radar-hype-api -n production→ reverte para release anterior (leva ~30s). - Scraper falhando? Verificar endpoint
/api/healthpara status de lojas → examinar CronJob logs viakubectl logs -l job-name=high-scraper→ restart manual:kubectl restart deployment/high-scraper-worker. - Alta latência de alertas? Monitorar memória Redis + política de evicção → verificar saturação do pool de conexões Postgres → scale HPA (horizontal pod autoscaler) se necessário.
- Backlog de webhooks? Verificar logs de entrega de eventos Stripe → revisar colisões de idempotency keys → replay de webhooks falhados via CLI Stripe.
- Degradação de performance de database? Executar análise de slow query log → adicionar índices se necessário → trigger pg_repack se bloat detectado.
Security & Privacy
- Chaves Stripe rotacionadas trimestralmente; chaves sensíveis armazenadas em Sealed Secrets do k8s (criptografadas, git-safe).
- Sem PII persistido—apenas nomes de produtos, preços, URLs; identificadores de usuários hasheados.
- Validação de webhook: verificação de assinatura HMAC-SHA256 em todos os webhooks Stripe.
- Rate limiting em endpoints de API (100 req/min por IP) para prevenir scraping de dados de leads.
- TLS 1.3 para todas as comunicações externas; CORS restringido ao domínio de frontend.
- Database: backups criptografados, point-in-time recovery até 30 dias.
Proof
Feed de alertas em tempo real
Alertas com sub-2s de latência agregadas de 20+ lojas independentes.
Pipeline de orquestração
Orquestração tolerante a falhas com retries automáticos e idempotência.
Deploy em produção
Deploy multi-ambiente k3s + Helm com GitOps CI/CD.
Want a technical walkthrough?Email me
What I'd Improve Next
- Alertas em sub-1s: Implementar servidor WebSocket (Socket.io) para push verdadeiramente real-time em vez de polling.
- Alertas de preço preditivos: Adicionar modelo de ML para forecasting de quedas de preço antes de ocorrerem usando dados históricos.
- Bundling multi-store: Permitir users configurar alertas através de bundles (ex: 'qualquer venda em tênis das Top 5 lojas').
- API White-label: Oferecer acesso API a outras plataformas (agregadores de fashion, ferramentas de influencers) para receita B2B.
- Analytics avançado: Dashboards self-serve mostrando deal velocity, tendências de preço, profundidade de inventory por loja.