{"id":26730319,"url":"https://github.com/thomas-dev7/gymcontroll-api","last_synced_at":"2026-05-05T05:39:06.620Z","repository":{"id":283318694,"uuid":"951386185","full_name":"Thomas-DEV7/gymcontroll-api","owner":"Thomas-DEV7","description":"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.","archived":false,"fork":false,"pushed_at":"2025-03-27T00:01:21.000Z","size":86,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T01:20:04.161Z","etag":null,"topics":["api","authentication","laravel","php","sanctum","sql"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Thomas-DEV7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-19T15:41:56.000Z","updated_at":"2025-03-27T00:01:24.000Z","dependencies_parsed_at":"2025-03-27T01:20:05.995Z","dependency_job_id":null,"html_url":"https://github.com/Thomas-DEV7/gymcontroll-api","commit_stats":null,"previous_names":["thomas-dev7/gymcontroll-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thomas-DEV7%2Fgymcontroll-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thomas-DEV7%2Fgymcontroll-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thomas-DEV7%2Fgymcontroll-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Thomas-DEV7%2Fgymcontroll-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Thomas-DEV7","download_url":"https://codeload.github.com/Thomas-DEV7/gymcontroll-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245938317,"owners_count":20697018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","authentication","laravel","php","sanctum","sql"],"created_at":"2025-03-27T23:19:18.848Z","updated_at":"2026-05-05T05:39:06.608Z","avatar_url":"https://github.com/Thomas-DEV7.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GymControll API\n\nAPI desenvolvida em **Laravel** (PHP 8.1) com banco de dados **PostgreSQL** hospedado na **Supabase**. \nO objetivo é permitir que o usuário crie treinos personalizados, adicione exercícios a esses treinos e registre execuções com cargas e repetições.\n\n---\n\n## 🚀 Tecnologias Utilizadas\n\n- PHP 8.1\n- Laravel 10\n- PostgreSQL (via Supabase)\n- Sanctum (Autenticação via Bearer Token)\n- Docker (opcional para deploy)\n- WSL2 (ambiente local)\n- Postman (para testes de API)\n\n---\n\n## 📚 Instalação Local\n\n1. Clone o projeto:\n```bash\ngit clone https://github.com/seuusuario/gymcontroll-api.git\ncd gymcontroll-api\n```\n\n2. Instale as dependências:\n```bash\ncomposer install\n```\n\n3. Configure o `.env`:\n```env\nAPP_NAME=GymControll\nAPP_URL=http://localhost:8000\n\nDB_CONNECTION=----\nDB_HOST=----\nDB_PORT=----\nDB_DATABASE=----\nDB_USERNAME=----\nDB_PASSWORD=---\n\nSANCTUM_STATEFUL_DOMAINS=localhost:8000\nSESSION_DOMAIN=localhost\n```\n\n4. Gere a chave de aplicação:\n```bash\nphp artisan key:generate\n```\n\n5. Execute as migrations:\n```bash\nphp artisan migrate\n```\n\n6. Rode o servidor:\n```bash\nphp artisan serve\n```\n\n---\n\n## 🔒 Autenticação\n\n| Método  | Rota          | Função         |\n|---------|---------------|----------------|\n| POST    | `/api/register` | Cadastro de usuários |\n| POST    | `/api/login`    | Login e geração do token |\n| GET     | `/api/me`       | Retorna dados do usuário logado |\n| POST    | `/api/logout`   | Faz logout (invalida o token) |\n\n**Exemplo de Registro:**\n```json\n{\n  \"name\": \"Thomas\",\n  \"email\": \"thomas@example.com\",\n  \"password\": \"123456\",\n  \"password_confirmation\": \"123456\"\n}\n```\n\n---\n\n## 🏋️‍♂️ CRUD de Treinos\n\n| Método | Rota | Função |\n|--------|------|--------|\n| GET    | `/api/trainings` | Listar treinos do usuário |\n| POST   | `/api/trainings` | Criar novo treino |\n| GET    | `/api/trainings/{uuid}` | Detalhar treino específico |\n| PUT    | `/api/trainings/{uuid}` | Atualizar treino |\n| DELETE | `/api/trainings/{uuid}` | Deletar treino |\n\n---\n\n## 🏋️ CRUD de Exercícios\n\n| Método | Rota | Função |\n|--------|------|--------|\n| GET    | `/api/trainings/{training_uuid}/exercises` | Listar exercícios de um treino |\n| POST   | `/api/trainings/{training_uuid}/exercises` | Criar exercício |\n| GET    | `/api/trainings/{training_uuid}/exercises/{uuid}` | Mostrar exercício |\n| PUT    | `/api/trainings/{training_uuid}/exercises/{uuid}` | Atualizar exercício |\n| DELETE | `/api/trainings/{training_uuid}/exercises/{uuid}` | Deletar exercício |\n\n---\n\n## 🏋️ CRUD de Execuções\n\n| Método | Rota | Função |\n|--------|------|--------|\n| GET    | `/api/exercises/{exercise_uuid}/executions` | Listar execuções |\n| POST   | `/api/exercises/{exercise_uuid}/executions` | Criar execução |\n| GET    | `/api/executions/{uuid}` | Mostrar execução |\n| PUT    | `/api/executions/{uuid}` | Atualizar execução |\n| DELETE | `/api/executions/{uuid}` | Deletar execução |\n\n---\n\n## 🗂️ Estrutura de Banco de Dados\n\n**Tabela `users`**\n- id\n- uuid\n- name\n- email\n- password\n- timestamps\n\n**Tabela `trainings`**\n- id\n- uuid\n- name\n- user_id (FK users)\n- timestamps\n\n**Tabela `exercises`**\n- id\n- uuid\n- name\n- training_id (FK trainings)\n- timestamps\n\n**Tabela `executions`**\n- id\n- uuid\n- exercise_id (FK exercises)\n- weight\n- amount\n- timestamps\n\n---\n\n## 📸 Imagem de Fluxo (Exemplo)\n\n![Gym Training](https://cdn.pixabay.com/photo/2020/06/07/07/11/fitness-5268302_1280.jpg)\n\n---\n\n## ✨ Observações\n\n- As rotas são protegidas com `auth:sanctum`.\n- IDs internos (numéricos) são usados apenas internamente. Toda comunicação entre API e frontend usa `UUID`.\n- Todos os fluxos possuem validações e retornam mensagens amigáveis em JSON.\n\n---\n\n## 🔥 Desenvolvido por\nThomas | GymControll Project | 2025\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomas-dev7%2Fgymcontroll-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthomas-dev7%2Fgymcontroll-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthomas-dev7%2Fgymcontroll-api/lists"}