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.
- 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)
- Clone o projeto:
git clone https://github.com/seuusuario/gymcontroll-api.git
cd gymcontroll-api- Instale as dependências:
composer install- 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- Gere a chave de aplicação:
php artisan key:generate- Execute as migrations:
php artisan migrate- Rode o servidor:
php artisan serve| 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": "[email protected]",
"password": "123456",
"password_confirmation": "123456"
}| 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 |
| 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 |
| 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 |
Tabela users
- id
- uuid
- name
- 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
- 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.
Thomas | GymControll Project | 2025
