Transforme seu treino em uma jornada gamificada. Aprenda, evolua e conquiste seus objetivos fitness.
- Sobre o Projeto
- Características Principais
- Tecnologias Utilizadas
- Arquitetura
- Estrutura do Projeto
- Instalação
- Scripts Disponíveis
- Funcionalidades
- APIs e Endpoints
- Modelo de Dados
- Segurança
- Performance
- Roadmap
- Contribuindo
O GymRats é uma plataforma completa de fitness gamificada, inspirada no Duolingo, que combina educação, treinamento personalizado e gestão de academias. O projeto utiliza tecnologias modernas e uma arquitetura offline-first robusta para proporcionar uma experiência de usuário excepcional.
- Gamificação Total: Sistema de XP, níveis, conquistas, streaks e rankings
- Educação Científica: Lições sobre anatomia, nutrição e ciência do treinamento
- Personalização com IA: Treinos e dietas gerados por IA baseados no perfil do usuário
- Gestão Completa: Sistema para academias gerenciarem alunos, equipamentos e finanças
- Experiência Offline-First: Funciona perfeitamente mesmo sem internet
- Alunos (Students): Pessoas que querem treinar, aprender e evoluir no fitness
- Academias (Gyms): Proprietários e gestores que precisam gerenciar seus negócios
- Sistema de XP: Ganhe pontos de experiência completando treinos, dietas e lições
- Níveis e Progressão: Suba de nível conforme acumula XP
- Sequências (Streaks): Mantenha sua sequência diária de treinos
- Conquistas: Desbloqueie badges e conquistas especiais
- Rankings: Compita com amigos em rankings semanais e mensais
- Desafios: Participe de desafios comunitários e ganhe recompensas
- Programas Personalizados: Treinos adaptados ao seu nível e objetivos
- Múltiplas Modalidades:
- Musculação tradicional
- Cardio (corrida, natação, ciclismo, etc.)
- Exercícios funcionais
- Análise de Postura: Sistema de análise de forma e correção de exercícios (planejado)
- Histórico Completo: Acompanhe todos os seus treinos e progresso
- Recordes Pessoais: Registre e acompanhe seus PRs
- Progresso Parcial: Salve treinos em andamento
- Rastreamento de Macros: Acompanhe calorias, proteínas, carboidratos e gorduras
- Planos de Dieta: Dietas personalizadas baseadas em seus objetivos
- Busca de Alimentos: Banco de dados extenso de alimentos e valores nutricionais
- Gerador de Dieta com IA: Crie planos alimentares personalizados
- Chat Nutricional: Assistente de IA para dúvidas (com limite diário)
- Anatomia Interativa: Explore músculos, funções e exercícios relacionados
- Lições Científicas: Aprenda sobre hipertrofia, nutrição e recuperação
- Quizzes: Teste seu conhecimento com quizzes interativos
- Explorador de Músculos: Visualize grupos musculares e exercícios
- Dashboard Completo: Visão geral em tempo real da academia
- Gestão de Alunos: Controle completo de membros, check-ins e frequência
- Gestão de Equipamentos: Rastreamento de equipamentos, uso e manutenção
- Financeiro: Controle de pagamentos, planos e receitas
- Estatísticas: Análises detalhadas de performance e retenção
- Gamificação para Academias: Sistema de XP e rankings para academias
- Mapa de Academias: Encontre academias parceiras próximas
- Compra de Diárias: Sistema de day pass para academias
- QR Code: Check-in rápido com QR code
- Planos de Assinatura: Gerenciamento de planos mensais, trimestrais e anuais
- Next.js 16.0 - Framework React com App Router e Server-Side Rendering
- React 19.2 - Biblioteca UI com as features mais recentes
- TypeScript 5.0 - Tipagem estática forte em todo o projeto
- Tailwind CSS 4.1 - Framework CSS utility-first
- shadcn/ui - Componentes UI acessíveis e customizáveis
- Radix UI - Primitivos UI acessíveis
- Lucide React - Biblioteca de ícones moderna
- Recharts - Gráficos e visualizações de dados
- Motion (Framer Motion) - Animações fluidas e interativas
- React Hook Form - Gerenciamento de formulários performático
- Zod - Validação de schemas TypeScript-first
- @hookform/resolvers - Integração entre React Hook Form e Zod
- Zustand - Gerenciamento de estado global leve e performático
- TanStack Query (React Query) - Gerenciamento de estado assíncrono e cache
- nuqs - Query strings type-safe para Next.js
- date-fns - Manipulação de datas moderna
- clsx + tailwind-merge - Construção e merge de classes CSS
- class-variance-authority - Variantes de componentes
- IndexedDB (via idb) - Banco de dados local para dados grandes
- Service Worker - Sincronização em background e cache
- localStorage - Armazenamento de tokens e flags
- Bun - Runtime JavaScript/TypeScript ultra-rápido (3x mais rápido que Node.js)
- Elysia - Framework web moderno e performático para Bun
- @elysiajs/cors - Plugin de CORS
- @elysiajs/swagger - Documentação automática de API
- @elysiajs/bearer - Autenticação Bearer token
- PostgreSQL - Banco de dados relacional (via Supabase)
- Prisma 6.19 - ORM moderno com type-safety completo
- Supabase - Backend-as-a-Service (PostgreSQL + Auth + Storage)
- Better Auth 1.4.5 - Sistema de autenticação moderno com integração nativa ao Elysia
- bcryptjs - Hashing de senhas
- Google OAuth - Login social com Google
- Axios - Cliente HTTP
- Nodemailer - Envio de emails
- Biome - Linter e formatter ultra-rápido (substituto do ESLint + Prettier)
- Husky - Git hooks para qualidade de código
┌─────────────────────────────────────────────┐
│ FRONTEND (Next.js) │
│ - React Components │
│ - Zustand Store (State Management) │
│ - Service Worker (Offline Sync) │
│ - IndexedDB (Local Storage) │
└─────────────────────────────────────────────┘
↕ HTTP/REST
┌─────────────────────────────────────────────┐
│ BACKEND (Elysia + Bun) │
│ - API Routes (REST) │
│ - Better Auth (Autenticação) │
│ - Handlers (Lógica de Negócio) │
│ - Middleware (Auth, CORS, Logging) │
└─────────────────────────────────────────────┘
↕ Prisma ORM
┌─────────────────────────────────────────────┐
│ DATABASE (PostgreSQL/Supabase) │
│ - Usuários, Alunos, Academias │
│ - Treinos, Exercícios, Nutrição │
│ - Progresso, Conquistas, Pagamentos │
└─────────────────────────────────────────────┘
O GymRats implementa uma arquitetura offline-first completa e robusta:
1. UI (React Components)
↓
2. State Management (Zustand)
↓
3. Sync Manager (Detecção Online/Offline)
↓
4. Persistência Local (IndexedDB)
↓
5. Service Worker (Background Sync)
↓
6. API Backend (quando online)
- Usuário interage → Componente React
- Optimistic Update → UI atualiza instantaneamente
- Sync Manager → Detecta se está online/offline
- Se Online → Envia para API imediatamente
- Se Offline → Salva na fila do IndexedDB
- Service Worker → Sincroniza quando voltar online
- Backend processa → Retorna confirmação
- Store atualiza → Dados finais do servidor
- ✅ Command Pattern com versionamento e dependências
- ✅ Optimistic Updates para UI instantânea
- ✅ Retry Exponencial com jitter para resiliência
- ✅ Idempotência garantida (evita duplicatas)
- ✅ Background Sync via Service Worker
- ✅ Cache em múltiplas camadas (memória, IndexedDB, localStorage)
- ✅ Observabilidade local para debug
- Component-Based Architecture: Componentes React reutilizáveis
- Server-Side Rendering: Next.js App Router para SSR
- Type Safety: TypeScript em todo o projeto
- Command Pattern: Transforma ações em objetos explícitos
- Repository Pattern: Abstração de acesso a dados via Prisma
- Middleware Pattern: Plugins Elysia para cross-cutting concerns
- CQRS: Separação entre comandos (write) e queries (read)
- SOLID: Princípios de design orientado a objetos
- Clean Code: Código limpo e manutenível
- DRY: Don't Repeat Yourself
- Separation of Concerns: Separação clara de responsabilidades
gymrats/
├── app/ # Next.js App Router
│ ├── api/ # API Routes (legacy, sendo migrado)
│ ├── auth/ # Páginas de autenticação
│ │ ├── login/ # Página de login
│ │ └── register/ # Página de registro
│ ├── student/ # Área do aluno
│ ├── gym/ # Área da academia
│ │ ├── dashboard/ # Dashboard principal
│ │ ├── students/ # Gestão de alunos
│ │ ├── equipment/ # Gestão de equipamentos
│ │ ├── financial/ # Gestão financeira
│ │ ├── stats/ # Estatísticas
│ │ └── settings/ # Configurações
│ ├── workout/ # Páginas de treino
│ ├── lesson/ # Lições educacionais
│ ├── onboarding/ # Onboarding inicial
│ ├── welcome/ # Página de boas-vindas
│ ├── layout.tsx # Layout raiz
│ └── page.tsx # Página inicial
│
├── server/ # Backend Elysia
│ ├── index.ts # Entry point
│ ├── app.ts # Configuração do app
│ ├── custom-server.ts # Servidor customizado
│ ├── plugins/ # Plugins Elysia
│ │ ├── auth.ts # Better Auth
│ │ ├── auth-macro.ts # Macros de auth
│ │ ├── auth-roles.ts # Macros de roles
│ │ ├── cors.ts # CORS
│ │ ├── db.ts # Prisma
│ │ └── request-logger.ts # Logging
│ ├── routes/ # Rotas por domínio
│ │ ├── auth.ts
│ │ ├── students.ts
│ │ ├── gyms.ts
│ │ ├── workouts.ts
│ │ ├── nutrition.ts
│ │ ├── foods.ts
│ │ └── ...
│ ├── handlers/ # Handlers de negócio
│ └── utils/ # Utilitários
│
├── components/ # Componentes React
│ ├── ui/ # Componentes base (shadcn/ui)
│ ├── achievement-card.tsx
│ ├── ai-workout-generator.tsx
│ ├── ai-diet-generator.tsx
│ ├── app-header.tsx
│ ├── app-bottom-nav.tsx
│ ├── cardio-tracker.tsx
│ ├── diet-page.tsx
│ ├── educational-lessons.tsx
│ ├── gym-map.tsx
│ ├── learning-path.tsx
│ ├── muscle-explorer.tsx
│ ├── nutrition-tracker.tsx
│ ├── profile-page.tsx
│ └── ...
│
├── lib/ # Bibliotecas e utilitários
│ ├── types.ts # Tipos TypeScript
│ ├── db.ts # Prisma Client
│ ├── auth-config.ts # Configuração Better Auth
│ ├── offline/ # Sistema offline-first
│ │ ├── sync-manager.ts # Gerenciador de sync
│ │ ├── command-pattern.ts # Command pattern
│ │ ├── indexeddb-storage.ts # Storage IndexedDB
│ │ └── ...
│ ├── educational-data/ # Dados educacionais (muscles, exercises, lessons)
│ ├── functional-exercises-data.ts
│ ├── calorie-calculator.ts
│ ├── posture-analysis.ts
│ ├── social-data.ts
│ └── utils.ts # Funções utilitárias
│
├── stores/ # Zustand stores
│ ├── student-unified.store.ts # Store unificado do aluno
│ ├── gym.store.ts # Store da academia
│ └── ...
│
├── hooks/ # Custom hooks
│ ├── use-mobile.ts
│ ├── use-toast.ts
│ ├── use-student-initializer.ts
│ └── ...
│
├── contexts/ # React contexts
│
├── prisma/ # Prisma ORM
│ ├── schema.prisma # Schema do banco
│ └── migrations/ # Migrações
│
├── public/ # Arquivos estáticos
│ ├── sw.js # Service Worker
│ ├── icon.svg # Logo
│ └── ...
│
├── docs/ # Documentação
│ ├── ANALISE_COMPLETA_PROJETO.md
│ ├── ARQUITETURA_COMPLETA_SISTEMA.md
│ ├── plan.md
│ └── ...
│
├── styles/ # Estilos globais
│ └── globals.css
│
├── .env # Variáveis de ambiente
├── components.json # Configuração do shadcn/ui
├── next.config.mjs # Configuração do Next.js
├── tsconfig.json # Configuração do TypeScript
├── tailwind.config.ts # Configuração do Tailwind
├── biome.json # Configuração do Biome
├── package.json # Dependências e scripts
└── README.md # Este arquivo
- Bun 1.0+ (recomendado) ou Node.js 18+
- PostgreSQL (ou conta Supabase)
-
Clone o repositório
git clone <url-do-repositorio> cd gymrats
-
Instale as dependências
bun install # ou npm install -
Configure as variáveis de ambiente
# Crie manualmente o arquivo .env na raiz do projeto # e preencha com as variaveis abaixo.
Variáveis necessárias:
# Database DATABASE_URL=postgresql://... DIRECT_URL=postgresql://... # Supabase NEXT_PUBLIC_SUPABASE_URL=https://... NEXT_PUBLIC_SUPABASE_ANON_KEY=... # App NEXT_PUBLIC_APP_URL=http://localhost:3000 BETTER_AUTH_URL=http://localhost:3000 BETTER_AUTH_SECRET=... # OAuth (opcional) GOOGLE_CLIENT_ID=... GOOGLE_CLIENT_SECRET=... # Email (opcional) EMAIL_USER=... EMAIL_PASSWORD=... # IA (opcional) DEEPSEEK_API_KEY=...
-
Execute as migrações do banco de dados
bun prisma migrate dev # ou npx prisma migrate dev -
Popule o banco com dados de exemplo (opcional)
bun prisma db seed # ou npx prisma db seed -
Execute o servidor de desenvolvimento
bun run dev # ou npm run dev -
Acesse a aplicação
http://localhost:3000
# Desenvolvimento
bun run dev # Inicia servidor de desenvolvimento (Next.js + Elysia)
# Build
bun run build # Cria build de produção
# Produção
bun run start # Inicia servidor de produção
# Linting e Formatação
bun run lint # Executa Biome (linting)
bun run format # Formata código com Biome
# Database
bun prisma migrate dev # Executa migrações em desenvolvimento
bun prisma migrate deploy # Executa migrações em produção
bun prisma studio # Abre Prisma Studio (GUI do banco)
bun prisma db seed # Popula banco com dados de exemplo
bun prisma generate # Gera Prisma ClientO GymRats suporta deployment via Docker com Next.js + Elysia rodando no Bun. O container executa o servidor customizado em server/custom-server.ts e injeta o backend na rota /api.
- Docker Desktop instalado e rodando
- Arquivo
.envconfigurado (mesmas variáveis usadas localmente)
# Database
DATABASE_URL=postgresql://...
DIRECT_URL=postgresql://...
# Auth
BETTER_AUTH_SECRET=...
BETTER_AUTH_URL=http://localhost:3000
# OAuth
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...
# Server
PORT=3000 # Porta do servidor (default: 3000)
HOST=0.0.0.0 # Host do servidor (default: 0.0.0.0 no Docker)Execute a aplicação em modo produção com PostgreSQL local:
docker compose up -d --buildServiços incluídos:
app: Next.js + Elysia (aplicação principal)db: PostgreSQL local (opcional, para desenvolvimento)
Execute a aplicação em modo desenvolvimento com hot reload:
docker compose -f docker-compose.dev.yml up --buildPara buildar a imagem Docker manualmente:
docker build -t gymrats-app:local .Visualize o status e logs dos containers:
# Ver status dos serviços
docker compose ps
# Ver logs em tempo real
docker compose logs -f app
# Ver logs do banco de dados
docker compose logs -f dbO container inclui um endpoint de health check:
GET /health
Retorna o status da aplicação e pode ser usado para monitoramento.
- Variáveis de ambiente: Se o build falhar por variáveis ausentes, revise o arquivo
.envantes de buildar - Banco de dados externo: Para usar banco externo (Supabase, Neon, etc.), remova o serviço
dbdodocker-compose.ymle configure apenasDATABASE_URLno serviçoapp - Produção real: Em ambientes de produção, use secrets/variáveis do seu orchestrator (Kubernetes, Docker Swarm, etc.)
- Volumes: Os dados do PostgreSQL local são persistidos em um volume Docker
# Parar todos os containers
docker compose down
# Parar e remover volumes (limpa banco de dados)
docker compose down -v
# Rebuild sem cache
docker compose build --no-cache
# Ver uso de recursos
docker statsPara mais detalhes, consulte o arquivo docs/DOCKER.md.
- Visão geral do progresso diário
- Sequência atual e XP ganho hoje
- Acesso rápido a treinos, cardio e dieta
- Personalização com IA
- Learning Path: Caminho de aprendizado gamificado
- Unidades e Lições: Estrutura similar ao Duolingo
- Exercícios Detalhados: Séries, repetições, descanso
- Análise de Forma: Feedback em tempo real (planejado)
- Histórico: Todos os treinos realizados
- Recordes Pessoais: Acompanhamento de PRs
- Progresso Parcial: Salvar treino em andamento
- Rastreamento de atividades cardiovasculares
- Exercícios funcionais categorizados
- Cálculo de calorias queimadas
- Histórico de sessões
- Rastreamento diário de macros
- Planos de dieta personalizados
- Busca de alimentos
- Gerador de dieta com IA
- Chat nutricional com IA (limite diário)
- Histórico nutricional
- Explorador de Músculos: Anatomia interativa
- Lições Científicas: Conteúdo educacional
- Quizzes: Testes de conhecimento
- Sistema de XP por lições completadas
- Mapa de academias parceiras
- Compra de diárias (day pass)
- QR code para check-in
- Histórico de visitas
- Gestão de assinaturas
- Histórico de pagamentos
- Métodos de pagamento
- Renovação automática
- Informações pessoais
- Objetivos e preferências
- Estatísticas detalhadas
- Fotos de progresso
- Conquistas desbloqueadas
- Métricas em tempo real
- Check-ins do dia
- Alunos ativos
- Equipamentos em uso
- Novos membros
- Lista completa de alunos
- Perfil detalhado de cada aluno
- Histórico de treinos
- Frequência e retenção
- Atribuição de treinadores
- Inventário completo
- Status em tempo real (disponível, em uso, manutenção)
- Histórico de uso
- Agendamento de manutenção
- QR codes para rastreamento
- Receitas e despesas
- Pagamentos pendentes
- Planos de assinatura
- Relatórios financeiros
- Cupons e descontos
- Análises detalhadas
- Taxa de retenção
- Crescimento de membros
- Utilização de equipamentos
- Horários de pico
- Perfil da academia
- Planos e preços
- Configurações de gamificação
- Integrações
O backend foi migrado de Next.js API Routes para Elysia + Bun com rotas modulares:
/api
├── /auth → Autenticação (Better Auth)
├── /users → Gerenciamento de usuários
├── /students → Dados de alunos
├── /gyms → Dados de academias
├── /workouts → Treinos e exercícios
├── /nutrition → Nutrição e dietas
├── /foods → Banco de dados de alimentos
├── /exercises → Exercícios educacionais
├── /subscriptions → Assinaturas de alunos
├── /gym-subscriptions → Assinaturas de academias
├── /payments → Pagamentos
├── /payment-methods → Métodos de pagamento
└── /memberships → Assinaturas de academias
POST /sign-up- Criar contaPOST /sign-in- LoginPOST /sign-out- LogoutGET /session- Verificar sessãoPOST /update-role- Atualizar role do usuário
GET /student- Dados do alunoGET /progress- Progresso (XP, streaks)GET /profile- Perfil detalhadoPUT /profile- Atualizar perfilGET /weight- Histórico de pesoPOST /weight- Adicionar pesoGET /personal-records- Recordes pessoaisGET /day-passes- Passes diáriosGET /friends- Amigos
GET /locations- Academias próximasGET /:id- Detalhes da academiaGET /:id/students- Alunos da academiaGET /:id/equipment- EquipamentosGET /:id/stats- Estatísticas
GET /units- Unidades de treinoGET /history- Histórico de treinosPOST /complete- Completar treinoGET /progress/:workoutId- Progresso parcialPUT /progress/:workoutId- Atualizar progresso
GET /daily- Nutrição do diaPOST /daily- Registrar refeiçãoPUT /water- Atualizar água
GET /search- Buscar alimentosGET /:id- Detalhes do alimento
O projeto usa Better Auth com integração nativa ao Elysia:
// Montar handler do Better Auth
app.mount(auth.handler)
// Middleware via macros (type-safe)
app.get('/profile', ({ user, studentId }) => {
// user e studentId já disponíveis
}, {
requireStudent: true // Macro de autenticação
})- requireAuth - Requer usuário autenticado
- requireStudent - Requer role STUDENT ou ADMIN
- requireGym - Requer role GYM ou ADMIN
- requireAdmin - Requer role ADMIN
Acesse a documentação interativa em:
- Swagger UI:
http://localhost:3000/api-docs - OpenAPI JSON:
http://localhost:3000/api/swagger
- User: Informações básicas, role (STUDENT, GYM, ADMIN)
- Account: Integração com Google OAuth
- Session: Tokens de autenticação
- Student: Perfil do aluno
- StudentProgress: XP, nível, streaks
- StudentProfile: Medidas, objetivos, preferências
- WeightHistory: Histórico de peso
- Gym: Informações da academia
- GymProfile: Estatísticas e gamificação
- GymStats: Métricas em tempo real
- Unit: Unidades de treino (agrupamento)
- Workout: Treino individual
- WorkoutExercise: Exercícios do treino
- WorkoutProgress: Progresso parcial
- WorkoutHistory: Histórico de treinos
- PersonalRecord: Recordes pessoais
- DietPlan: Plano de dieta
- Meal: Refeição
- DailyNutrition: Rastreamento diário
- FoodItem: Banco de dados de alimentos
- NutritionChatUsage: Controle de uso do chat com IA
- Achievement: Conquistas
- AchievementUnlock: Conquistas desbloqueadas
- GymMembership: Assinatura de academia
- MembershipPlan: Planos de assinatura
- DayPass: Passes diários
- CheckIn: Registro de check-in
- Equipment: Equipamentos
- Subscription: Assinatura do aluno
- GymSubscription: Assinatura da academia
- Payment: Histórico de pagamentos
- PaymentMethod: Métodos de pagamento
- Expense: Despesas da academia
- Friendship: Conexões entre alunos
Para mais detalhes, consulte o arquivo prisma/schema.prisma.
- Better Auth com sessões seguras
- Hashing de senhas com bcryptjs
- OAuth Google para login social
- Tokens JWT para API
- Cookies HTTP-only para sessões
- Role-Based Access Control (RBAC)
- STUDENT: Acesso a features de aluno
- GYM: Acesso a gestão de academia
- ADMIN: Acesso total
- Validação de entrada com Zod em todas as APIs
- Sanitização de dados do usuário
- CORS configurado corretamente
- Rate limiting (planejado)
- Idempotência para evitar duplicatas
- LGPD Compliance (planejado)
- Dados sensíveis criptografados
- Logs de auditoria (planejado)
- Code Splitting automático do Next.js
- Lazy Loading de componentes
- Image Optimization com Next.js Image
- Memoization com React.memo e useMemo
- Virtual Scrolling para listas grandes (planejado)
- Bun Runtime - 3x mais rápido que Node.js
- Elysia Framework - Performance otimizada
- Connection Pooling do Prisma
- Query Optimization com índices no banco
- Caching em múltiplas camadas
- IndexedDB para dados grandes
- Service Worker para cache inteligente
- Background Sync para sincronização
- Optimistic Updates para UI instantânea
- Time to Interactive: < 2s
- First Contentful Paint: < 1s
- API Response Time: < 100ms (média)
- Offline Capability: 100% funcional
O projeto utiliza um design system baseado no Duolingo, com:
- Verde Principal:
#58CC02- Ações positivas, progresso - Azul:
#1CB0F6- Informações, links - Laranja:
#FF9600- Alertas, atenção - Vermelho:
#FF4B4B- Erros, ações destrutivas - Amarelo:
#FFC800- Destaques, conquistas - Roxo:
#CE82FF- Premium, especial
- DM Sans - Corpo de texto
- Space Grotesk - Títulos e destaques
Todos os componentes são baseados no shadcn/ui com customizações:
- Buttons, Cards, Dialogs, Dropdowns
- Forms (Input, Select, Checkbox, Radio)
- Navigation (Tabs, Menu, Breadcrumb)
- Feedback (Toast, Alert, Progress)
- Data Display (Table, Badge, Avatar)
- Overlays (Modal, Popover, Tooltip)
- 📱 Mobile First: Design otimizado para mobile (320px+)
- 📱 Tablet: 768px+
- 💻 Desktop: 1024px+
- 🖥️ Large Desktop: 1440px+
- Interface completa de aluno
- Interface completa de academia
- Sistema de gamificação básico
- Componentes UI completos
- Estrutura de rotas
- Tipagem TypeScript completa
- Dados mockados para desenvolvimento
- Arquitetura offline-first completa
- Sistema de autenticação com Better Auth
- Migração para Bun + Elysia
- Integração com IA (DeepSeek)
- Análise de postura com IA
- Sistema de pagamentos (Stripe)
- Notificações push
- Modo offline completo (PWA)
- App mobile nativo (React Native)
- Integração com wearables
- Marketplace de treinos
- Live classes
- Comunidade e fóruns
- Certificações e badges NFT
- Command Pattern com versionamento
- Retry exponencial com jitter
- Idempotência garantida
- Background Sync via Service Worker
- Observabilidade local para debug
- Bun (3x mais rápido que Node.js)
- Elysia (framework otimizado)
- IndexedDB para dados grandes
- Carregamento prioritizado dinâmico
- Deduplicação de requisições
- TypeScript em 100% do código
- Prisma para type-safe database
- Zod para validação runtime
- Better Auth type-safe
- Biome (linting ultra-rápido)
- Hot reload instantâneo
- Swagger automático
- Git hooks para qualidade
- Arquitetura modular
- Rotas específicas (não monolíticas)
- Cache em múltiplas camadas
- Connection pooling
- Preparado para microservices
Contribuições são bem-vindas! Para contribuir:
- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'feat: add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
- Use TypeScript com tipagem forte
- Siga os princípios SOLID e Clean Code
- Mantenha componentes pequenos e focados
- Use componentes do shadcn/ui quando possível
- Documente funções complexas
- Escreva código testável
Seguir Conventional Commits:
feat: adiciona nova funcionalidade
fix: corrige bug
docs: atualiza documentação
style: formatação de código
refactor: refatoração sem mudança de comportamento
test: adiciona ou corrige testes
chore: tarefas de manutenção
- Duolingo - Gamificação e learning path
- MyFitnessPal - Rastreamento nutricional
- Strong - App de treino
- Strava - Social fitness
Este projeto é privado e proprietário.
- ❤️ React & Next.js
- 🎨 Tailwind CSS & shadcn/ui
- 📘 TypeScript
- ⚡ Bun & Elysia
- 🗄️ Prisma & PostgreSQL
- 🔐 Better Auth
- 🚀 Vercel (deploy recomendado)
Para dúvidas ou sugestões, entre em contato através do repositório.
Feito com 💚 para transformar vidas através do fitness
⭐ Se este projeto foi útil para você, considere dar uma estrela!