You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
API para gestão de rotinas de academia, permitindo a geração de treinos automáticos, controle de biblioteca de exercícios e acompanhamento de evolução de carga (PR). O projeto conta com validação de dados via Zod, autenticação via JWT, proteção contra spam com Rate Limit e envio de e-mails com Brevo. Recentemente integrada a um frontend em React, disponível em: gym-app-frontend.
🚀 Instalação e Execução
Execução Local
# 1. Clone o repositório
git clone [https://github.com/Geovanni-dev/gym-app-api.git](https://github.com/Geovanni-dev/gym-app-api.git)
# 2. Instale as dependências
npm install
# 3. Configure o arquivo .env# Crie um arquivo .env na raiz com as seguintes chaves:
PORT=3000
DATABASE_URL=mongodb://127.0.0.1:27017/workout-api
JWT_SECRET=sua_chave_secreta
# Configurações de E-mail (Brevo API)
BREVO_API_KEY=xkeysib-sua_chave_v3
BREVO_EMAIL=geovanni3344@gmail.com
# Configurações de Upload de Imagens (Cloudinary)
CLOUDINARY_CLOUD_NAME=seu_cloud_name
CLOUDINARY_API_KEY=sua_api_key
CLOUDINARY_API_SECRET=sua_api_secret
# Configurações de CORS e Frontend
CLIENT_URL=[https://gym-superfrango.vercel.app](https://gym-superfrango.vercel.app),http://localhost:5173
# 4. Inicie o servidor
npm start
🐳 Execução via Docker
Você pode subir a API rapidamente usando o Docker, garantindo o mesmo ambiente de execução da produção.
# 1. Certifique-se de que o seu arquivo .env está configurado na raiz do projeto.# 2. Construa a imagem e inicie o container em segundo plano
docker compose up -d
# Para visualizar os logs em tempo real:
docker compose logs -f
# Para derrubar o container:
docker compose down
API para gestão de treinos. Este projeto foi desenvolvido com o propósito de compor meu portfólio e consolidar habilidades em Node.js, Express e MongoDB, com ênfase em lógica de negócios e autenticação JWT. A partir dessa base, implementei novas funcionalidades e construí um frontend dedicado do zero em React, motivado por uma necessidade pessoal.