← Projetos

Alahubs

Plataforma lifestyle com tracking de hábitos, saúde biométrica e geração de refeições por IA. Em beta com 2500+ usuários, real-time via Socket.IO e dois processadores de pagamento.

2023LiveFundador & Arquiteto Full-StackSaaSHealthSocialMarketplace
  • NestJS
  • Next.js
  • PostgreSQL
  • Redis
  • OpenAI
  • Socket.IO
  • Stripe
  • Mercado Pago
  • AWS S3
  • Docker
  • Kubernetes
2500+ usuários
150k+ eventos/dia
<200ms real-time
40+ modelos

Impact

  • Oito domínios interconectados: hábitos, métricas de saúde biométrica, planejamento de refeições com IA, armazenamento criptografado e feed social. Tudo modelado em 40+ tabelas PostgreSQL com suporte a múltiplos tiers de assinatura.
  • Inferência em tempo real via Socket.IO com adapter Redis para deploy multi-instância. Cinco workers dedicados cuidam de notificações, geração de refeições, processamento de filas e recuperação de jobs. Latência abaixo de 200ms em produção.
  • Stripe e Mercado Pago unificados em um único modelo de pagamento, com idempotency keys para prevenir cobrança dupla e tracking de conversão via Meta Ads com browser fingerprinting e captura de UTM no signup.
  • Dados biométricos criptografados com AES-256 em campo. Service Worker com acesso a file system e suporte offline. Analytics de adoção de features e monetização em seis bibliotecas de visualização.

KPIs

Modelos de BD
40+
Real-time
Socket.IO + Redis
Integração IA
OpenAI Assistant
Processadores
Stripe + Mercado Pago
Workers
5 dedicados
Libs de Visualização
6 (D3, Recharts+)
Cobertura PWA
Offline-first

Traction & Growth

Active Users
8
Paying Customers
0
Monthly Price
Ainda não lançado
MRR
Pre-launch
Acquisition Channel
Beta fechado
Beta com usuários convidados. Sem marketing ou receita ainda. Foco em validação das features core antes do lançamento público.

Architecture

alahubs-architecture

Key Decisions

  • Checkout como serviço separado: Deploy mais complexo, mas falhas e scaling de pagamentos ficam isolados das operações de usuário. Stripe e Mercado Pago evoluem de forma independente.
  • OpenAI Assistant API para geração de refeições: Latência ligeiramente maior que completions brutas, mas o contexto thread-based permite conversas multi-turn e function calling para cálculos nutricionais sem prompt engineering manual.
  • Redis pub/sub para real-time em vez de event sourcing: Mais simples de operar, mas exige atenção à idempotência. Polling de 30s para geração de refeições evita thundering herd em picos de uso.
  • Workers node-cron embutidos no servidor NestJS: Sem fleet de workers separada e sem overhead operacional adicional. O custo é o acoplamento: todos os workers sobem e caem junto com o servidor.

Hard Problems

  • Sincronização entre instâncias Socket.IO: eventos de uma instância precisam chegar a clientes conectados em outras. O @socket.io/redis-adapter resolve via pub/sub, mas exige broadcasting padronizado e atenção ao connection pooling. Resultado: latência abaixo de 200ms mesmo em deploy distribuído.
  • A Assistant API da OpenAI não suporta retorno tipado diretamente. Definimos schemas estruturados nas function definitions, parseamos os tool_call JSON com validação e montamos um pipeline multi-step com rastreamento de status na MealGenerationQueue.
  • Stripe cobra em USD com modelo de subscriptions; Mercado Pago processa BRL com API de orders. Uma camada de abstração no checkout service mapeia os dois para um modelo interno com enum de provedor. Idempotency keys previnem cobrança dupla em retentativas.
  • A chave de decriptação dos dados biométricos fica só em memória de runtime, nunca em banco. bcrypt para hash da master key, AES-256 para os campos. Constraints em nível de banco impedem gravação em plaintext.
  • Tokens fbp/fbc da Meta expiram e UTMs se perdem em redirects. FingerprintJS persiste o fingerprint no localStorage e Redux; o modelo Leads captura fbp, fbc, GCLID e utm_source no signup para reconstruir a cadeia completa de atribuição.

Ops & Runbook

  • Migrations Prisma com shadow database. Índices em [userId, habitId, date] para registros de hábito e em [senderId, receiverId] para amizades. Snapshots diários para S3 via CloudWatch.
  • Redis com replicação para instância backup. Em queda do primary, degradação graciosa de 30s com mensagens em buffer. Failover manual: redis-cli SLAVEOF.
  • Workers com Docker health checks. Em falha, Kubernetes reinicia o container. Jobs presos em status=processing detectados a cada 5min e re-enfileirados.
  • Cron noturno compara ledger de invoices Stripe com SubscriptionPayments local. Discrepâncias disparam alerta no Slack. MRR calculado de assinaturas ativas.
  • Uso da OpenAI rastreado em FeaturesUseRecords. Alerta a 80% do limite mensal. Se quota excedida, geração entra em fila com aviso ao usuário.

Security & Privacy

  • Dados biométricos criptografados com AES-256 em campo. bcrypt para master key, IV separado. Plaintext nunca é gravado em banco.
  • JWT de curta vida (15min) com refresh tokens rotacionados a cada uso. Guards via decorator @Auth() com avaliação de roles por reflector.
  • Reset de senha com token único, TTL de 1 hora e rate limiting de 5 requisições por hora por IP via ThrottlerModule.
  • Números de cartão nunca armazenados. CustomerCard guarda token e últimos 4 dígitos. Compliance PCI via Stripe e Mercado Pago.
  • Conexões Socket.IO validadas por JWT middleware. URLs CloudFront assinadas para acesso ao S3.

What I'd Improve Next

  • Substituir node-cron por Bull ou RabbitMQ para ter visibilidade real sobre filas, retries e falhas.
  • Uma camada GraphQL permitiria batch requests como geração de refeição junto com conclusão de hábito em uma chamada.
  • Event sourcing habilitaria queries temporais e trilha de auditoria completa das ações do usuário.
  • Recomendações de hábitos baseadas em clustering comportamental e embeddings da OpenAI.