O Workout Tracker é um projeto em desenvolvimento com o objetivo de facilitar a vida de quem treina, permitindo criar, editar, deletar e registrar logs de treinos e exercícios de academia, além de oferecer diversas funcionalidades voltadas ao acompanhamento da evolução física e da rotina de treinos.
Com base em conceitos modernos como Arquitetura Limpa, princípios SOLID e Inversão de Dependência, o projeto visa ser escalável, modular e altamente testável, pronto para receber evoluções como personal trainers, grupos de amigos, estatísticas gráficas, notificações, login social e integração com serviços de pagamento.
- 🔐 Autenticação (login, troca e recuperação de senha via email)
- 🧑 Perfil do usuário (avatar, informações pessoais e físicas)
- 🏋️ Criação e gerenciamento de treinos
- 💪 Criação e vinculação de exercícios aos treinos
- 📝 Registro de execução de exercícios (logs)
- 📊 Dashboard com métricas médias semanais do treino
- 📚 Histórico completo de logs paginado
- 📧 Recuperação de senha com token por email
- 🖼️ Upload de imagem de perfil via MinIO
A estrutura é baseada em Arquitetura Limpa, com separação clara de responsabilidades entre domínio, infraestrutura e aplicação:
src/
├── core/ # Lógica essencial compartilhada (ex: DTOs, helpers, erros globais)
├── domain/ # Domínio da aplicação
│ ├── application/ # Casos de uso, interfaces e lógica de negócio
│ │ ├── cryptography/ # Abstrações de criptografia (hash, JWT)
│ │ ├── errors/ # Erros de negócio
│ │ ├── repositories/ # Interfaces dos repositórios
│ │ ├── use-cases/ # Casos de uso (Application Services)
│ ├── enterprise/ # Camada do domínio puro
│ │ ├── entities/ # Entidades (User, Workout, Exercise, Log, etc.)
│ │ ├── types/ # Tipagens utilitárias
│ │ ├── value-object/ # Value Objects (ex: Email, Password, etc.)
├── infra/ # Implementações concretas
│ ├── auth/ # Estratégias de autenticação (JWT, guards, interceptors)
│ ├── cryptography/ # Hashing, JWT, etc.
│ ├── database/ # Prisma Client e conexão com PostgreSQL
│ ├── env/ # Configuração de variáveis de ambiente
│ ├── guards/ # Guards personalizados para rotas
│ ├── http/ # Controllers, rotas e DTOs da camada HTTP
│ ├── mailer/ # Envio de emails com Nodemailer
│ ├── storage/ # Uploads de arquivos com MinIO
├── utils/ # Funções auxiliares e helpers
├── app.module.ts # Módulo principal da aplicação
├── main.ts # Ponto de entrada da aplicação- 📝 FAQ para dúvidas
- 💳 Integração com meios de pagamento para planos futuros (ex: Stripe)
- 🤝 Relacionamento de usuário com personal trainer
- 👥 Criação de grupos de amigos
- 📈 Estatísticas gráficas de desempenho por período
- 🔔 Notificações (lembrete de treino)
- 🔑 Login com Google, GitHub, etc.
- 🧠 Recomendação inteligente de treinos (IA)
pnpm installpnpm start:devpnpm start:prodpnpm prisma generate
pnpm prisma migrate devCrie um arquivo .env na raiz com os seguintes valores:
SERVICE=""
PORT=""
VERSION=""
DATABASE_URL=""
FRONTEND_URLS=""
APP_URL_WORKOUT_TRACKER=""
MINIO_BUCKET_NAME=""
MINIO_BUCKET_URL=""
MINIO_ACCESS_KEY_ID=""
MINIO_SECRET_ACCESS_KEY=""
JWT_PRIVATE_KEY=""
JWT_PUBLIC_KEY=""
NODE_MAILER_PORT=""
NODE_MAILER_HOST=""
NODE_MAILER_FROM=""
NODE_MAILER_USER=""
NODE_MAILER_PASSWORD=""Funcionalidades disponíveis:
Envio de token para recuperação de senha
Recuperação de senha com token válido
Utiliza o MinIO para simular o Amazon S3, permitindo:
-
Upload seguro de imagem de perfil
-
Acesso posterior aos arquivos de forma segura
- Autor: 👨💻 YuriLRodrigues
- LinkedIn: Yuri Leite Rodrigues