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": "thomas@example.com",
"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