Visão geral
Aplicação web para gestão de treinos, permitindo cadastrar, organizar e acompanhar rotinas de exercícios. Possui API back-end responsável pelo gerenciamento dos dados de treinos e usuários, e um front-end que fornece interface intuitiva para criação, visualização e administração das rotinas, facilitando o controle e planejamento de atividades físicas.
O que o sistema entrega
- Autenticação social com Google via Better-Auth, com sessão persistente.
- Onboarding guiado por IA para configurar perfil e criar o primeiro plano de treino.
- Gestão completa de planos de treino com dias e exercícios personalizados.
- Registro de sessões com timestamps de início e conclusão por dia de treino.
- Estatísticas detalhadas: streak, consistência semanal, taxa de conclusão e tempo total.
Arquitetura do projeto
- Backend em Fastify 5, TypeScript 5.9 e Prisma 7 com PostgreSQL 16.
- Autenticação baseada em sessão com Better-Auth e OAuth Google.
- Frontend web em Next.js com App Router, React 19 e Tailwind CSS 4.
- Client da API gerado automaticamente pelo Orval via especificação OpenAPI.
- Containerização do backend com Docker (multi-stage build) e deploy independente.
Camada backend
A API REST foi construída com Fastify 5, priorizando
performance e organização em camadas (Routes → Use Cases → Prisma). Todos os endpoints —
exceto autenticação — exigem sessão ativa. A documentação interativa está disponível via
Scalar no endpoint /docs, com especificação OpenAPI em
/swagger.json.
Core
Fastify 5 e TypeScript 5.9 sobre Node.js 24 como runtime base da API.
Banco de dados
PostgreSQL 16 gerenciado pelo Prisma 7 com suporte a migrations e tipos gerados.
Autenticação
Better-Auth 1.4 com login social via Google OAuth e sessão persistente.
Validação
Zod 4.3 para schemas de entrada, com erros customizados mapeados para HTTP.
Camada frontend web
A interface foi desenvolvida mobile-first com tema dark ativado por padrão. O App Router do Next.js organiza Server e Client Components de forma separada, com Server Actions para operações de treino. O client da API é gerado pelo Orval a partir da especificação OpenAPI, garantindo tipagem completa e integração automática com cookies de sessão.
- Next.js 16.1 com App Router, SSR e Server Actions para operações de treino.
- React 19, TypeScript 5 e Tailwind CSS 4 com shadcn/ui (estilo New York).
- Orval 8.1 para geração automática do client e tipos da API via OpenAPI.
- Better-Auth no frontend para autenticação com Google e proteção de rotas.
- Navegação inferior mobile com 5 itens: Home, Calendário, IA, Stats e Perfil.
Personal Trainer com IA
Um chatbot flutuante alimentado pelo GPT-4o-mini está disponível em todas as telas da aplicação. Durante o onboarding, o assistente coleta dados físicos e cria o primeiro plano de treino personalizado via conversa. Em uso contínuo, pode listar planos, criar novos e atualizar o perfil do usuário diretamente pelo chat.
- AI SDK 6.0 integrado no backend (Fastify) e no frontend (Next.js Route Handler).
- Chat em tempo real via streaming SSE com renderização de markdown animada.
- Ferramentas (tools) no backend permitem ao modelo consultar e gravar dados reais.
- Sugestões pré-definidas para facilitar o início da conversa no chatbot.
- Onboarding guiado: de dados físicos ao primeiro plano de treino via conversa.
Modelo de dados
O modelo relacional conecta usuários, planos, dias e sessões
de forma hierárquica. Apenas um plano pode estar ativo por usuário; a ativação de um novo
desativa o anterior automaticamente via caso de uso CreateWorkoutPlan.
- User — usuário autenticado com dados físicos opcionais (peso, altura, idade e % de gordura corporal).
- WorkoutPlan — plano de treino; somente um pode estar ativo por usuário por vez.
- WorkoutDay — dia do plano, podendo ser treino (com exercícios) ou descanso.
- WorkoutExercise — exercício com séries, repetições e tempo de descanso configurados.
- WorkoutSession — sessão iniciada e concluída, com timestamps de início e fim registrados.
Resumo técnico
Gestão de Treinos é um projeto full stack focado em experiência mobile-first e integração com IA. A API REST em Fastify 5 + TypeScript + Prisma 7 + PostgreSQL 16 serve uma aplicação Next.js + React 19 + Tailwind CSS 4, com autenticação via Better-Auth (Google OAuth), client gerado pelo Orval e um personal trainer virtual alimentado pelo GPT-4o-mini com suporte a streaming e criação de planos por conversa.