Skip to content

Backend API for GymControll, built with Laravel. This project is being migrated to a microservices architecture, separating backend and frontend for improved scalability, performance, and maintainability. The API handles user authentication, workout tracking, and load management, ensuring a seamless experience for athletes and trainers.

Notifications You must be signed in to change notification settings

Thomas-DEV7/gymcontroll-api

Repository files navigation

GymControll API

API desenvolvida em Laravel (PHP 8.1) com banco de dados PostgreSQL hospedado na Supabase. O objetivo é permitir que o usuário crie treinos personalizados, adicione exercícios a esses treinos e registre execuções com cargas e repetições.


🚀 Tecnologias Utilizadas

  • PHP 8.1
  • Laravel 10
  • PostgreSQL (via Supabase)
  • Sanctum (Autenticação via Bearer Token)
  • Docker (opcional para deploy)
  • WSL2 (ambiente local)
  • Postman (para testes de API)

📚 Instalação Local

  1. Clone o projeto:
git clone https://github.com/seuusuario/gymcontroll-api.git
cd gymcontroll-api
  1. Instale as dependências:
composer install
  1. Configure o .env:
APP_NAME=GymControll
APP_URL=http://localhost:8000

DB_CONNECTION=----
DB_HOST=----
DB_PORT=----
DB_DATABASE=----
DB_USERNAME=----
DB_PASSWORD=---

SANCTUM_STATEFUL_DOMAINS=localhost:8000
SESSION_DOMAIN=localhost
  1. Gere a chave de aplicação:
php artisan key:generate
  1. Execute as migrations:
php artisan migrate
  1. Rode o servidor:
php artisan serve

🔒 Autenticação

Método Rota Função
POST /api/register Cadastro de usuários
POST /api/login Login e geração do token
GET /api/me Retorna dados do usuário logado
POST /api/logout Faz logout (invalida o token)

Exemplo de Registro:

{
  "name": "Thomas",
  "email": "thomas@example.com",
  "password": "123456",
  "password_confirmation": "123456"
}

🏋️‍♂️ CRUD de Treinos

Método Rota Função
GET /api/trainings Listar treinos do usuário
POST /api/trainings Criar novo treino
GET /api/trainings/{uuid} Detalhar treino específico
PUT /api/trainings/{uuid} Atualizar treino
DELETE /api/trainings/{uuid} Deletar treino

🏋️ CRUD de Exercícios

Método Rota Função
GET /api/trainings/{training_uuid}/exercises Listar exercícios de um treino
POST /api/trainings/{training_uuid}/exercises Criar exercício
GET /api/trainings/{training_uuid}/exercises/{uuid} Mostrar exercício
PUT /api/trainings/{training_uuid}/exercises/{uuid} Atualizar exercício
DELETE /api/trainings/{training_uuid}/exercises/{uuid} Deletar exercício

🏋️ CRUD de Execuções

Método Rota Função
GET /api/exercises/{exercise_uuid}/executions Listar execuções
POST /api/exercises/{exercise_uuid}/executions Criar execução
GET /api/executions/{uuid} Mostrar execução
PUT /api/executions/{uuid} Atualizar execução
DELETE /api/executions/{uuid} Deletar execução

🗂️ Estrutura de Banco de Dados

Tabela users

  • id
  • uuid
  • name
  • email
  • password
  • timestamps

Tabela trainings

  • id
  • uuid
  • name
  • user_id (FK users)
  • timestamps

Tabela exercises

  • id
  • uuid
  • name
  • training_id (FK trainings)
  • timestamps

Tabela executions

  • id
  • uuid
  • exercise_id (FK exercises)
  • weight
  • amount
  • timestamps

📸 Imagem de Fluxo (Exemplo)

Gym Training


✨ Observações

  • As rotas são protegidas com auth:sanctum.
  • IDs internos (numéricos) são usados apenas internamente. Toda comunicação entre API e frontend usa UUID.
  • Todos os fluxos possuem validações e retornam mensagens amigáveis em JSON.

🔥 Desenvolvido por

Thomas | GymControll Project | 2025

About

Backend API for GymControll, built with Laravel. This project is being migrated to a microservices architecture, separating backend and frontend for improved scalability, performance, and maintainability. The API handles user authentication, workout tracking, and load management, ensuring a seamless experience for athletes and trainers.

Topics

Resources

Stars

Watchers

Forks

Languages