Projeto

Coach App — plataforma para personal trainers

🚧 Em construção — Plataforma mobile + web para personal trainers: planos de treino com prescrição de séries, execução em tempo real pelo aluno, convites com deep link, assinaturas via RevenueCat e push notifications. Monorepo React Native + Node.

Criador e desenvolvedor

Ficha Técnica

Papel

Criador e desenvolvedor

Stack

react nativeexpotypescriptprismapostgresqlturborepo
Código privado — o case abaixo detalha a arquitetura e as decisões técnicas.

🚧 Em construção — o núcleo (treinos, execução, convites, assinaturas) está funcional de ponta a ponta; dieta e relatórios ainda estão em desenvolvimento.

Personal trainers gerenciam alunos por WhatsApp e planilha: o treino vai em PDF, o acompanhamento se perde na conversa, e a cobrança é manual. O Coach App é uma plataforma mobile + web onde o coach monta planos de treino com prescrição completa — séries, reps, cargas, supersets — e o aluno executa pelo celular com timer de descanso, histórico e volume calculado automaticamente.

Como funciona

  • Coach: monta planos com wizard multi-etapas, biblioteca de exercícios (centenas seedados + customizados), templates, dias de treino e prescrição por série (reps alvo/mín/máx, carga, duração para exercícios de tempo).
  • Aluno: recebe convite por código/deep link, executa o treino com registro de cada série, timer de descanso, resumo com volume total e histórico — em kg ou lb, por sessão.
  • Vínculo coach-aluno: sistema de convites v2 com troca de coach segura (confirma antes de desvincular, ajusta contadores dos dois lados, notifica todo mundo por push + in-app + e-mail) e limite de alunos por plano.
  • Monetização: assinaturas in-app via RevenueCat (planos starter/professional/enterprise), com webhook idempotente.
  • Engajamento: push via FCM respeitando preferências, lembretes de treino 3× ao dia e relatório semanal por cron.
  • Login sem senha: OTP por e-mail que unifica login e cadastro, com refresh token rotativo.

Arquitetura

Monorepo Turborepo com app mobile (Expo/React Native), web (Next.js) e API (Express + Prisma), mais pacotes compartilhados de tipos, i18n e UI.

Visão de componentes e infraestrutura:

Fluxo de troca de coach (o caso espinhoso):

Decisões técnicas que valem a pena contar

Backend plugável por env var. O mobile fala com repositórios atrás de interfaces (RepositoryFactory): mock, pocketbase ou api. Isso permitiu desenvolver a UI inteira antes do backend existir — e depois migrar de PocketBase para a API própria sem tocar em uma tela. O mesmo padrão cobre pagamentos, com detecção automática de Expo Go para cair no provider mock quando módulos nativos não estão disponíveis.

Webhook RevenueCat blindado. Assinatura HMAC-SHA256 verificada com timingSafeEqual, router montado antes do express.json() para preservar o raw body, idempotência por tabela de entregas com chave única e resolução de usuário em cascata para sobreviver ao aliasing de clientes do RevenueCat. Evento órfão responde 200 — para não gerar retry infinito.

Inicialização de pagamento resiliente. Deduplicação de inicializações concorrentes via promise compartilhada, cache limpo em falha para permitir retry — o tipo de detalhe que evita o clássico "pagamento travou na primeira abertura".

Stack

Turborepo + pnpm · React Native 0.81 + Expo 54 · Tamagui · Zustand · Next.js 15 · Express + Prisma + PostgreSQL · RevenueCat · Firebase Admin (FCM) · i18n pt-BR/en-US · Docker Compose.

Status

🚧 Núcleo funcional de ponta a ponta: auth OTP, planos, execução de treino, convites com deep link, assinaturas, push e crons. Em desenvolvimento: módulo de dieta (hoje mockado), relatórios de progresso com gráficos, métricas corporais e export PDF.

Curtiu o projeto?

Se quiser conversar sobre esse projeto, arquitetura ou uma oportunidade de trabalho, é só me chamar. 🚀

contato@racoelho.com.br
Racoelho

Conteúdo sobre desenvolvimento, tecnologia e desafios de programação para impulsionar sua carreira em tech.

Conecte-se

© 2024- 2026 Racoelho. Todos os direitos reservados.

v3.0.19 • Build: 2026-04-17