Pular para o conteúdo
PRODUTO EM PRODUÇÃO
nutrixfit.expostacker.com.br/
NutriX — arte do produto
live preview

NutriX — Plataforma de saúde adaptativa em produção

Stack tecnológica: React Vite Hono Cloudflare Workers Cloudflare D1 R2
35+
Rotas
32
Migrations
8
Módulos

Cliente

NutriX

Setor

HealthTech — Nutrição e performance B2C

Linha do tempo

8 fases · 2026

Produto ao vivo

Usar agora

Resultados

Resultados reportados pelo cliente durante o rollout

35+ Rotas LIVE

Baseline: mapa de rotas Phase 8

Fonte: docs/ROUTES.md

32 Migrations D1

Baseline: schema versionado

Fonte: migrations/

8 Módulos

Baseline: fases entregues

Fonte: docs/

11 Docs de domínio

Baseline: engines, API, privacidade

Fonte: docs/

Dados reportados pelo cliente

O desafio

O desafio

NutriX é uma plataforma completa de saúde adaptativa em produção. O usuário faz um diagnóstico, recebe plano de nutrição e programa de treino calculados por motores determinísticos, executa dia a dia e o sistema adapta — com coach de IA, análise de refeição por foto e acompanhamento profissional opcional.

Apps de dieta entregam PDF estático que ignora a rotina real. O cliente precisava de uma plataforma que calculasse plano de nutrição e treino de forma determinística, adaptasse semanalmente conforme execução, e escalasse para um modelo de negócio com assinaturas, afiliados e acompanhamento profissional — tudo com privacidade de dados de saúde.

A abordagem

A abordagem

Estruturamos em fases de produto, cada uma entregando um loop real: fundação técnica, nutrição, treino + inteligência, visão computacional, commerce, afiliados, cuidado profissional e integrações de saúde. Motores determinísticos primeiro — IA só entra onde agrega, nunca onde decide sozinha.

A solução

A solução

O produto cobre o ciclo completo de saúde do usuário:

  • Onboarding resumível: objetivo, rotina, preferências e restrições em poucos minutos
  • Motor de nutrição determinístico: Mifflin-St Jeor, targets versionados, plano semanal de 7 dias gerado do catálogo TACO/USDA
  • Motor de treino versionado com sessão ao vivo: logging de séries, timer de descanso e feedback
  • Today: state machine de próxima ação que guia o dia do usuário
  • Luna: coach contextual com intent determinístico, safety layer e respostas honestas
  • NutriX Vision: foto da refeição via token de uso único, estimativa com bandas de confiança e revisão obrigatória do usuário
  • Commerce: assinaturas provider-agnostic com adapter Mercado Pago, checkout e gestão de billing
  • Afiliados: dashboard com links, métricas, comissões e payouts
  • Portal profissional: nutricionistas e treinadores verificados com escopos de acesso revogáveis pelo usuário

Linha do tempo

Como o projeto foi conduzido, do mapeamento ao deploy. How the project was conducted, from mapping to deploy.

Fases 1–2

Fundação

  • React + Vite + Workers + D1
  • Auth, onboarding resumível
  • Motor de nutrição + plano semanal

Fases 3–4

Inteligência

  • Motor de treino + sessão ao vivo
  • Luna (coach contextual)
  • NutriX Vision + camada de IA

Fases 5–8

Negócio

  • Commerce Mercado Pago + afiliados
  • Portal de profissionais com escopos
  • Health integrations + legal

Metodologia

Como o projeto foi conduzido, do mapeamento ao deploy. How the project was conducted, from mapping to deploy.

1

Fases de produto com loop real entregue em cada uma — nada de scaffold sem função

2

Motores determinísticos com targets e programas versionados para auditoria

3

Camada de IA com registry de modelos, roteamento por tarefa, timeout e fallback controlado

4

Privacidade por design: tokens de uso único, magic bytes, escopos revogáveis

5

Documentação por domínio: ROUTES, API, engines, privacidade e design system

Arquitetura

SPA React + Vite
code-split por rota
Worker · Hono /api/v1
edge — mesmo runtime
D1 + R2
32 migrations · mídia privada
Motores determinísticos
Gateway de IA
Commerce adapters
Afiliados · Portal pro
  • → SPA React servida pelo Worker — assets estáticos e API no mesmo runtime
  • → API Hono /api/v1 com guards de auth, role e escopo por rota
  • → D1: 32 migrações versionadas — planos, targets, programas e logs versionados
  • → R2: mídia privada com tokens de uso único e magic-byte validation
  • → Motores determinísticos isolados: nutrição, treino, adaptação
  • → Gateway de IA: registry → routing por tarefa → timeout → fallback → cost ledger
  • → Commerce: adapters provider-agnostic com webhooks assinados e deduplicados

Diagrama conceitual — não reflete implementação real

Stack tecnológica

Escolhas técnicas e o que ficou para fora.

Frontend

React + Vite

Por quê: SPA rápida com code-splitting por rota — vision e affiliate são chunks lazy.

Alternativa rejeitada: Next.js (rejeitado — SSR desnecessário, Worker já serve tudo)

react-router-dom

Por quê: 35+ rotas com guards de auth e role por rota.

Alternativa rejeitada: TanStack Router (rejeitado — maturidade do ecossistema)

API e Edge

Hono + Workers

Por quê: API e assets no mesmo runtime edge — um deploy, latência mínima.

Alternativa rejeitada: Express/VPS (rejeitado — custo fixo e região única)

Zod

Por quê: Validação de schema em toda borda da API.

Alternativa rejeitada: Validação manual (rejeitado — divergência garantida)

Dados

Cloudflare D1

Por quê: SQLite distribuído com 32 migrações versionadas.

Alternativa rejeitada: Supabase (rejeitado — D1 cobre com menos peças móveis)

Cloudflare R2

Por quê: Mídia privada com tokens de uso único para fotos de refeição.

Alternativa rejeitada: S3 (rejeitado — egress e complexidade)

IA

Camada de IA própria

Por quê: Registry de modelos, roteamento por tarefa, timeouts, fallback controlado e ledger de custo.

Alternativa rejeitada: Chamada direta a um provider (rejeitado — lock-in e zero controle de custo)

Commerce

Adapter Mercado Pago

Por quê: Provider-agnostic: MP em produção, Mock em dev/CI, webhooks assinados.

Alternativa rejeitada: Stripe-only (rejeitado — Pix via MP é essencial no Brasil)

Decision log

O que escolhi, o que rejeitei e por quê.

Motores determinísticos antes da IA

Por que: Plano alimentar e de treino precisam ser auditáveis, reproduzíveis e defensáveis. A IA (Luna) opera como camada contextual read-only com safety checks — ela explica e orienta, não prescreve.

Alternativas rejeitadas: IA gerando planos direto (rejeitado — alucinação em contexto de saúde é inaceitável); regras hardcoded sem versionamento (rejeitado — impossível auditar mudanças).

Workers + D1 na edge

Por que: SPA servida globalmente com latência mínima e custo próximo de zero em escala inicial. API Hono no mesmo Worker, D1 com 32 migrações versionadas, R2 para mídia privada.

Alternativas rejeitadas: VPS/Node tradicional (rejeitado — custo fixo e latência regional); Supabase (rejeitado — D1 já atendia com menos peças móveis).

Visão com revisão obrigatória

Por que: Estimativa de refeição por foto é probabilística — o sistema entrega estimativa com banda de confiança e exige confirmação do usuário antes de logar. Upload privado via token de uso único, validação por magic bytes.

Alternativas rejeitadas: Log automático sem revisão (rejeitado — erros de estimativa virariam dados de saúde falsos); upload público (rejeitado — privacidade).

Commerce provider-agnostic

Por que: Adapter pattern para pagamentos: Mercado Pago em produção, Mock em dev/CI, troca de provider sem reescrever assinaturas, webhooks assinados e deduplicados.

Alternativas rejeitadas: Acoplamento direto ao Mercado Pago (rejeitado — migração de provider viraria rewrite); Stripe-only (rejeitado — mercado-alvo é Brasil, Pix via MP é essencial).

Assistente de IA

Luna — pipeline do coach contextual

1

Contexto mínimo: apenas o estado relevante do usuário entra no prompt

2

Intent determinístico: classificação da pergunta antes de qualquer modelo

3

Safety layer: bloqueio de prescrição, dosagem e aconselhamento médico

4

Ferramentas read-only: Luna lê plano e progresso, nunca escreve

5

Resposta honesta: admite limitação e redireciona para profissional quando cabe

Progressão e aderência

Anel do dia

Today mostra progresso "1/6" do dia com refeições, peso e treino marcados.

Aderência

Logs de execução alimentam /nutrition/adherence e a revisão semanal.

Revisão semanal

Check-in NutriX: corpo mudou, rotina mudou — plano reajusta.

Planos versionados

v1 → v2 → v3: cada adaptação gera nova versão auditável do plano.

Segurança e acesso

Privacidade e segurança de dados de saúde

  • CSP restritiva com frame-ancestors 'none' e headers de hardening

  • Upload de fotos via token de uso único + validação por magic bytes

  • Escopos de acesso revogáveis para profissionais de saúde

  • Webhooks de pagamento assinados e deduplicados

  • bcrypt para credenciais, validação Zod em toda borda da API

Lições aprendidas

Nem tudo saiu como planejado.

— Em produto de saúde, a confiança é o feature. Cada decisão — IA read-only, revisão obrigatória de estimativas, escopos revogáveis para profissionais — existe porque dado de saúde errado não é bug, é dano.

Quer um produto como esse?

Posso fazer o mesmo para o seu negócio. Vamos conversar.