API Backend para sistema de acompanhamento esportivo desenvolvida com NestJS, TypeScript e MongoDB.
- NestJS - Framework Node.js
- TypeScript - Linguagem de programação
- MongoDB - Banco de dados NoSQL
- Mongoose - ODM para MongoDB
- JWT - Autenticação
- Passport - Middleware de autenticação
- Bcrypt - Hash de senhas
- Node.js (v18 ou superior)
- MongoDB (v6 ou superior)
- npm ou yarn
- Clone o repositório
git clone <repository-url>
cd sports-tracker-api- Instale as dependências
npm install- Configure as variáveis de ambiente
cp .env.example .envEdite o arquivo .env com suas configurações:
PORT=3000
NODE_ENV=development
MONGODB_URI=mongodb://localhost:27017/sports-tracker
JWT_SECRET=your-super-secret-jwt-key
JWT_EXPIRES_IN=7d- Inicie o MongoDB
mongod- Execute a aplicação
npm run start:devA API estará disponível em http://localhost:3000
src/
├── modules/
│ ├── auth/ # Autenticação e autorização
│ ├── users/ # Gerenciamento de usuários
│ ├── workouts/ # Treinos
│ ├── exercises/ # Biblioteca de exercícios
│ ├── goals/ # Metas dos usuários
│ └── analytics/ # Estatísticas e análises
├── app.module.ts # Módulo raiz
└── main.ts # Entrada da aplicação
POST /auth/register- Registrar novo usuárioPOST /auth/login- Login de usuárioPOST /auth/validate- Validar token JWT
GET /users- Listar todos os usuáriosGET /users/profile- Obter perfil do usuário logadoGET /users/:id- Obter usuário por IDPATCH /users/:id- Atualizar usuárioDELETE /users/:id- Remover usuárioGET /users/trainer/:trainerId/athletes- Listar atletas de um treinador
POST /workouts- Criar novo treinoGET /workouts- Listar treinos do usuárioGET /workouts/:id- Obter treino por IDPATCH /workouts/:id- Atualizar treinoDELETE /workouts/:id- Remover treinoPATCH /workouts/:id/complete- Marcar treino como completo
POST /exercises- Criar novo exercícioGET /exercises- Listar exercíciosGET /exercises/:id- Obter exercício por IDGET /exercises/category/:category- Listar exercícios por categoriaPATCH /exercises/:id- Atualizar exercícioDELETE /exercises/:id- Remover exercício
POST /goals- Criar nova metaGET /goals- Listar metas do usuárioGET /goals?status=active- Filtrar metas por statusGET /goals/:id- Obter meta por IDPATCH /goals/:id- Atualizar metaDELETE /goals/:id- Remover metaPATCH /goals/:id/progress- Atualizar progresso da meta
GET /analytics/stats- Estatísticas gerais do usuárioGET /analytics/trends?days=30- Tendências de treinosGET /analytics/goals/progress- Progresso das metasGET /analytics/categories- Distribuição por categoria
A API utiliza JWT (JSON Web Tokens) para autenticação. Após o login, inclua o token no header das requisições:
Authorization: Bearer <seu-token>
- athlete - Atleta (pode visualizar e completar treinos)
- trainer - Treinador (pode criar e atribuir treinos)
npm run test
npm run test:watch
npm run test:covnpm run build
npm run start:proddocker-compose up -dMIT