Projeto Gestão de Treinos

Domine Seus Treinos com IA | Full Stack

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.

  1. User — usuário autenticado com dados físicos opcionais (peso, altura, idade e % de gordura corporal).
  2. WorkoutPlan — plano de treino; somente um pode estar ativo por usuário por vez.
  3. WorkoutDay — dia do plano, podendo ser treino (com exercícios) ou descanso.
  4. WorkoutExercise — exercício com séries, repetições e tempo de descanso configurados.
  5. 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.