WorkoutX é uma aplicação web moderna e completa para gerenciamento de treinos de musculação, desenvolvida com Next.js 15, TypeScript e integração com Clerk para autenticação.
- Criar Treinos Personalizados: Crie treinos personalizados com exercícios específicos
- Histórico de Treinos: Acompanhe seu progresso ao longo do tempo
- Execução de Treinos: Interface intuitiva para executar treinos em tempo real
- Controle de Séries e Repetições: Registre séries, repetições, peso e tempo de descanso
- Biblioteca de Exercícios: Acesse uma ampla biblioteca de exercícios
- Grupos Musculares: Organize exercícios por grupos musculares
- Detalhes dos Exercícios: Visualize descrições, imagens e vídeos dos exercícios
- Busca Avançada: Encontre exercícios por nome ou grupo muscular
- Comunidade: Compartilhe treinos e experiências com outros usuários
- Perfil do Usuário: Gerencie seu perfil e configurações
- Sistema de Permissões: Controle de acesso baseado em permissões
- Dashboard Personalizado: Visualize estatísticas e métricas de treino
- Gráficos de Progresso: Acompanhe sua evolução com gráficos interativos
- Relatórios de Atividade: Análise detalhada do seu desempenho
- Next.js 15 - Framework React com App Router
- TypeScript - Tipagem estática
- Tailwind CSS - Estilização utilitária
- Radix UI - Componentes acessíveis
- Lucide React - Ícones modernos
- React Hook Form - Gerenciamento de formulários
- Zod - Validação de schemas
- TanStack Query - Gerenciamento de estado do servidor
- React Context - Gerenciamento de estado global
- Custom Hooks - Lógica reutilizável
- Clerk - Autenticação e gerenciamento de usuários
- JWT Tokens - Autenticação via Bearer Token
- Middleware - Proteção de rotas
- Biome - Linting e formatação
- Turbopack - Build otimizado
- TypeScript - Tipagem estática
src/
├── app/ # App Router do Next.js
│ ├── (dashboard)/ # Grupo de rotas do dashboard
│ │ ├── dashboard/ # Página principal
│ │ ├── workouts/ # Gestão de treinos
│ │ ├── create-workout/ # Criação de treinos
│ │ ├── workout-history/ # Histórico de treinos
│ │ ├── muscle-groups/ # Grupos musculares
│ │ ├── exercises/ # Exercícios
│ │ ├── profile/ # Perfil do usuário
│ │ ├── community/ # Comunidade
│ │ └── report-bug/ # Relatório de bugs
│ ├── api/ # API Routes
│ ├── login/ # Página de login
│ ├── sign-in/ # Página de entrada
│ └── sign-up/ # Página de cadastro
├── components/ # Componentes reutilizáveis
│ ├── auth/ # Componentes de autenticação
│ ├── dashboard/ # Componentes do dashboard
│ ├── layout/ # Componentes de layout
│ ├── modals/ # Modais e diálogos
│ ├── providers/ # Providers de contexto
│ ├── ui/ # Componentes de UI base
│ └── workouts/ # Componentes de treinos
├── contexts/ # Contextos React
├── hooks/ # Custom hooks
├── lib/ # Utilitários e configurações
├── services/ # Serviços de API
└── types/ # Definições de tipos TypeScript
- Node.js 18+
- npm ou yarn
- Conta no Clerk (para autenticação)
git clone https://github.com/seu-usuario/workoutx-app.git
cd workoutx-appnpm install
# ou
yarn installCopie o arquivo de template e configure as variáveis:
cp env.template .env.localEdite o arquivo .env.local com suas configurações:
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_your-clerk-publishable-key-here
CLERK_SECRET_KEY=sk_test_your-clerk-secret-key-here
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_AFTER_SIGN_IN_URL=/dashboard
NEXT_PUBLIC_CLERK_AFTER_SIGN_UP_URL=/dashboard
# API Configuration
NEXT_PUBLIC_API_URL=http://localhost:3002- Acesse clerk.com e crie uma conta
- Crie um novo projeto
- Copie as chaves de API para o arquivo
.env.local - Configure as URLs de redirecionamento no painel do Clerk
npm run dev
# ou
yarn devAcesse http://localhost:3000 no seu navegador.
# Desenvolvimento
npm run dev # Inicia o servidor de desenvolvimento com Turbopack
# Produção
npm run build # Gera build de produção
npm run start # Inicia o servidor de produção
# Qualidade de código
npm run lint # Executa o linter (Biome)
npm run format # Formata o código automaticamenteO WorkoutX utiliza o Clerk para autenticação, oferecendo:
- Login/Registro com email e senha
- Autenticação social (Google, GitHub, etc.)
- Proteção de rotas automática
- Gerenciamento de sessão seguro
- Tokens JWT para autenticação da API
O sistema inclui um sistema de permissões baseado em roles:
- Admin: Acesso completo ao sistema
- User: Acesso padrão aos recursos
- Moderator: Permissões intermediárias
O aplicativo se conecta a uma API backend que deve implementar os seguintes endpoints:
GET /muscle-group- Listar grupos muscularesPOST /muscle-group- Criar grupo muscularPATCH /muscle-group/:id- Atualizar grupo muscularDELETE /muscle-group/:id- Deletar grupo muscular
GET /exercise- Listar exercíciosPOST /exercise- Criar exercícioPATCH /exercise/:id- Atualizar exercícioDELETE /exercise/:id- Deletar exercício
GET /workout- Listar treinos do usuárioPOST /workout- Criar treinoGET /workout/:id- Obter treino específicoPATCH /workout/:id- Atualizar treinoDELETE /workout/:id- Deletar treinoPATCH /workout/:id/start- Iniciar treinoPATCH /workout/:id/stop- Parar treinoPATCH /workout/:id/complete- Finalizar treino
POST /auth- Autenticar usuário
Todas as requisições incluem automaticamente o header de autorização:
Authorization: Bearer <jwt-token>
O WorkoutX suporta temas claro e escuro com:
- Tema automático baseado nas preferências do sistema
- Alternância manual entre temas
- Persistência das preferências do usuário
- Componentes responsivos que se adaptam ao tema
O aplicativo é totalmente responsivo e otimizado para:
- Desktop (1024px+)
- Tablet (768px - 1023px)
- Mobile (até 767px)
- Menu lateral colapsível
- Navegação otimizada para touch
- Componentes adaptativos para telas pequenas
# Executar testes (quando implementados)
npm run test
# Executar testes com coverage
npm run test:coverage- Conecte seu repositório ao Vercel
- Configure as variáveis de ambiente
- Deploy automático a cada push
O projeto pode ser deployado em qualquer plataforma que suporte Next.js:
- Netlify
- Railway
- DigitalOcean
- AWS
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
- Use TypeScript para tipagem
- Siga as convenções do ESLint/Biome
- Escreva testes para novas funcionalidades
- Documente mudanças significativas
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: suporte@workoutx.com
- Next.js - Framework React
- Clerk - Autenticação
- Radix UI - Componentes acessíveis
- Tailwind CSS - Estilização
- TanStack Query - Gerenciamento de estado
Desenvolvido com ❤️ para a comunidade fitness
