Skip to content

LipeLacross/CargaLog

Repository files navigation

🏋️ CargaLog - Plataforma Completa

🇧🇷 Português | 🇺🇸 English

Plataforma profissional de rastreamento de progressão de treinos com Clean Architecture

NestJS React React%20Native TypeScript PostgreSQL Docker License


📋 Índice


Sobre o Projeto

CargaLog é uma plataforma enterprise para rastreamento de progressão de treinos de musculação. Desenvolvida com Clean Architecture, Domain-Driven Design (DDD) e princípios SOLID, oferece uma experiência integrada entre:

  • 🖥️ Backend robusto com API REST escalável
  • 🌐 Web responsivo com dashboard moderno
  • 📱 App nativo para iOS e Android

🎯 Objetivo

Permitir que atletas, personal trainers e academias registrem, analisem e acompanhem a evolução de carga em tempo real através de múltiplos dispositivos com sincronização automática e segura.

✨ Características Principais

🔐 Segurança

  • ✅ Autenticação JWT com expiração configurável
  • ✅ Criptografia de senhas com bcrypt (10 rounds)
  • ✅ Validação de entrada em todas as rotas
  • ✅ CORS configurado para produção
  • ✅ Rate limiting e proteção contra ataque

🏋️ Funcionalidades

  • ✅ Registro de treinos com validações robustas
  • ✅ Histórico completo de exercícios
  • ✅ Cálculo automático de carga máxima e volume
  • ✅ Filtros avançados por período, exercício, etc.
  • ✅ Comparação de progressão entre treinos

📊 Análises

  • ✅ Estatísticas gerais do usuário
  • ✅ Gráficos de progressão de carga
  • ✅ Ranking de exercícios mais treinados
  • ✅ Relatórios personalizados
  • ✅ Exportação de dados

🔄 Sincronização

  • ✅ Sincronização em tempo real entre dispositivos
  • ✅ Offline-first no mobile
  • ✅ Conflito resolution automático
  • ✅ Backup automático na nuvem

📸 Galeria Visual

CargaLog Screenshot 1 CargaLog Screenshot 2 CargaLog Screenshot 3 CargaLog Screenshot 4 CargaLog Screenshot 5 CargaLog Screenshot 6 CargaLog Screenshot 7 CargaLog Screenshot 8 CargaLog Screenshot 9 CargaLog Screenshot 10 CargaLog Screenshot 11 CargaLog Screenshot 12 CargaLog Screenshot 13 CargaLog Screenshot 14 CargaLog Mobile Screenshot 1 CargaLog Mobile Screenshot 2 CargaLog Mobile Screenshot 3 CargaLog Mobile Screenshot 4 Frontend Favicon Frontend Vite Logo

Arquitetura

Clean Architecture + DDD

O projeto segue uma arquitetura limpa com camadas bem definidas:

┌─────────────────────────────────────────┐
│        Apresentação (Web/Mobile)        │
├─────────────────────────────────────────┤
│  Interface Adapters (Controllers/API)   │
├─────────────────────────────────────────┤
│     Application (Use Cases/Services)    │
├─────────────────────────────────────────┤
│    Domain (Entities/Value Objects)      │
├─────────────────────────────────────────┤
│  Frameworks & Drivers (DB/HTTP/Auth)    │
└─────────────────────────────────────────┘

Princípios SOLID

  • SRP: Cada classe tem uma única responsabilidade
  • OCP: Aberto para extensão, fechado para modificação
  • LSP: Subtypes substituem base types sem quebrar
  • ISP: Interfaces específicas, não genéricas
  • DIP: Dependência em abstrações, não em concretos

Stack Tecnológico

📘 Backend

{
  "runtime": "Node.js 22",
  "framework": "NestJS 11",
  "adapter": "FastifyAdapter",
  "database": "PostgreSQL 15",
  "orm": "TypeORM",
  "auth": "JWT + Passport",
  "validation": "Class-validator",
  "logging": "Winston + Audit Log",
  "apiDocs": "Swagger/OpenAPI",
  "testing": "Vitest (305 tests)",
  "containerization": "Docker & Docker Compose"
}

🌐 Frontend Web

{
  "library": "React 19",
  "language": "TypeScript",
  "buildTool": "Vite 8",
  "styling": "Tailwind CSS 4",
  "httpClient": "Axios",
  "routing": "React Router",
  "stateManagement": "Context API + Hooks",
  "charts": "Recharts",
  "packager": "npm"
}

📱 Mobile

{
  "framework": "React Native 0.84",
  "platform": "React Native CLI",
  "language": "TypeScript",
  "styling": "NativeWind (Tailwind CSS)",
  "navigation": "React Navigation",
  "storage": "AsyncStorage",
  "httpClient": "Axios",
  "stateManagement": "Context API",
  "testing": "Vitest (13 tests)",
  "packager": "npm"
}

Estrutura dos Projetos

📁 Diretório Raiz

CargaLog/
├── 📘 backend/                    # API REST (NestJS)
│   ├── src/
│   │   ├── domain/               # Entidades, Value Objects, Repositórios
│   │   ├── application/          # Use Cases, DTOs
│   │   ├── interface-adapters/   # Controllers, Repositories Impl
│   │   ├── frameworks/           # NestJS Modules, TypeORM
│   │   └── shared/               # Decorators, Filters, Services
│   ├── test/                     # Testes E2E
│   ├── Dockerfile
│   ├── docker-compose.yml
│   ├── package.json
│   ├── README.md                 # 📖 Documentação Detalhada
│   └── README_EN.md
│
├── 🌐 frontend/                  # Dashboard Web (React + Vite)
│   ├── src/
│   │   ├── api/                  # HTTP clients
│   │   ├── pages/                # Componentes de página
│   │   ├── components/           # Componentes reutilizáveis
│   │   ├── hooks/                # Custom Hooks
│   │   ├── contexts/             # Context API
│   │   ├── utils/                # Utilitários
│   │   └── styles/               # CSS Global + Tailwind
│   ├── public/                   # Assets estáticos
│   ├── package.json
│   ├── vite.config.ts
│   ├── tailwind.config.js
│   ├── README.md                 # 📖 Documentação Detalhada
│   └── README_EN.md
│
├── 📱 mobile/                    # App Nativo (React Native)
│   ├── src/
│   │   ├── screens/              # Telas do app
│   │   ├── components/           # Componentes RN
│   │   ├── navigation/           # React Navigation
│   │   ├── api/                  # HTTP clients
│   │   ├── contexts/             # Context API
│   │   ├── hooks/                # Custom Hooks
│   │   └── utils/                # Utilitários
│   ├── app.json
│   ├── babel.config.js
│   ├── metro.config.js
│   ├── tailwind.config.js
│   ├── package.json
│   ├── README.md                 # 📖 Documentação Detalhada
│   └── README_EN.md
│
├── 📋 ARCHITECTURE.md            # 🏗️ Detalhes arquitetura completa
├── 📄 README.md                  # Este arquivo
├── 📄 README_EN.md               # English version
├── 📋 IDEAS.md                   # Roadmap e ideias futuras
├── 📋 LICENSE                    # MIT License
└── 📋 next-steps.txt             # Próximas ações

Como Começar

Pré-requisitos

# Verificar versões mínimas
node --version          # v22.0.0+
npm --version          # v10.0.0+
git --version          # 2.30+

# Ferramentas opcionais
docker --version       # Para containerização
postgresql --version   # Se usar local (caso contrário use Docker)

Instalação Rápida

1. Clone o repositório

git clone https://github.com/seu-usuario/cargalog.git
cd CargaLog

2. Backend (Node + PostgreSQL)

cd backend

# Instalar dependências
npm install

# Configurar ambiente
cp .env.example .env

# Migrations do banco (ou usar docker-compose)
npm run migration:run

# Iniciar servidor
npm run start:dev

Acesso: http://localhost:3000 Documentação: http://localhost:3000/api

3. Frontend Web

cd frontend

# Instalar dependências
npm install

# Iniciar desenvolvimento
npm run dev

Acesso: http://localhost:5173

4. Mobile App

cd mobile

# Instalar dependências
npm install

# Terminal 1
npm run start

# Terminal 2 (Android)
npm run android

# Terminal 2 (iOS - macOS)
npm run ios

Com Docker (Recomendado)

# Na raiz do projeto
cd backend

# Build e iniciar
docker-compose up -d

# Migrations automáticas
npm run migration:run

Documentação

📚 Documentação Detalhada por Projeto

  • Backend - API REST, autenticação, banco de dados
  • Frontend - Dashboard web, componentes, estado
  • Mobile - App nativo, sincronização, offline

📐 Arquitetura

🔗 Links Úteis


Status do Projeto

✅ Concluído

  • Backend API completa com CRUD
  • Autenticação com JWT
  • Validações e tratamento de erro
  • Testes unitários e E2E (Backend: 305, Frontend: 31, Mobile: 13)
  • Documentação API Swagger/OpenAPI
  • Logging com Winston + Audit Log no banco
  • Docker setup completo
  • Clean Architecture implementada

🔄 Em Desenvolvimento

  • Frontend web - Dashboard interativo
  • Mobile app - Sincronização real-time
  • Gráficos avançados
  • Notificações push
  • Biometria no mobile

📋 Roadmap

  • Sistema de grupos e competições
  • Integração com wearables
  • IA para recomendações de treino
  • Marketplace de planos de treino
  • Certificação de Personal Trainers
  • Versão desktop (Electron)

🤝 Contribuindo

  1. Fork o projeto
  2. Crie uma branch (git checkout -b feature/MinhaFeature)
  3. Commit suas mudanças (git commit -m 'Add: nova feature')
  4. Push para a branch (git push origin feature/MinhaFeature)
  5. Abra um Pull Request

Regras de Commit

  • Use conventional commits: feat:, fix:, docs:, refactor:
  • Exemplo: feat(backend): adicionar validação de carga

About

Fullstack strength tracker with NestJS (Fastify), TypeORM, PostgreSQL (Supabase), React (Vite), and React Native CLI. Features JWT auth, workout logging, progress analytics, and CI/CD with GitHub Actions + GHCR.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors