Uma API RESTful para um sistema de gestão de cursos e progresso de aprendizado, construída sobre o framework Laravel 12 e documentada com OpenAPI (Swagger).
Para rodar este projeto localmente, você precisa ter:
- Git
- PHP (mínimo 8.2, recomendado 8.4)
- Composer (versão 2.x)
- Banco de dados configurado (MySQL, PostgreSQL ou SQLite)
Siga estes passos para configurar e executar o projeto em seu ambiente local:
git clone https://github.com/santyasm/dev-learn-api
cd dev-learn-apiCrie o arquivo .env a partir do exemplo fornecido:
cp .env.example .envEdite o arquivo .env e configure as credenciais do seu banco de dados MySQL:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=dev_learn_api
DB_USERNAME=seu_usuario_mysql
DB_PASSWORD=sua_senha_mysqlInstale todas as dependências PHP necessárias usando o Composer:
composer installExecute os comandos de configuração e migração:
# Roda as migrações (cria as tabelas no banco de dados configurado)
php artisan migrate --graceful
# (Opcional) Popule o banco com dados de teste
php artisan db:seedInicie o servidor de desenvolvimento local do Laravel:
php artisan serveO servidor da API está disponível em:
https://dev-learn-api.onrender.com
| Recurso / Descrição | Método | URL | Acesso |
|---|---|---|---|
| API Base | - | Link | Público |
| Documentação (Swagger) | - | Link | Público |
| Registrar Usuário | POST | /auth/register |
Público |
| Login | POST | /auth/login |
Público |
| Listar Cursos | GET | /courses |
Público (opcionalmente autenticado) |
| Criar Curso | POST | /courses |
Admin |
| Atualizar Curso | PUT/PATCH | /courses/{id} |
Admin |
| Excluir Curso | DELETE | /courses/{id} |
Admin |
| Listar Vídeos | GET | /videos |
Autenticado |
| Detalhes do Vídeo | GET | /videos/{id} |
Autenticado |
| Criar Vídeo | POST | /videos |
Admin |
| Atualizar Vídeo | PUT | /videos/{id} |
Admin |
| Importar Vídeos de Playlist | POST | /videos/import |
Admin |
| Excluir Vídeo | DELETE | /videos/{id} |
Admin |
| Listar Usuários | GET | /users |
Admin |
| Detalhes do Usuário | GET | /users/{id} |
Admin |
| Atualizar Usuário | PUT/PATCH | /users/{id} |
Admin |
| Excluir Usuário | DELETE | /users/{id} |
Admin |
| Meus Dados | GET | /user |
Autenticado |
| Atualizar Meus Dados | PUT/PATCH | /user |
Autenticado |
| Excluir Minha Conta | DELETE | /user |
Autenticado |
| Criar Matrícula | POST | /enrollments |
Autenticado |
| Atualizar Matrícula | PUT/PATCH | /enrollments/{id} |
Autenticado |
| Excluir Matrícula | DELETE | /enrollments/{id} |
Autenticado |
| Meus Cursos Matriculados | GET | /user/enrollments |
Autenticado |
| Marcar Vídeo como Concluído | POST | /videos/{enrollment}/{video}/complete |
Autenticado |
| Desmarcar Vídeo Concluído | DELETE | /videos/{enrollment}/{video}/complete |
Autenticado |
| Listar Vídeos Concluídos da Matrícula | GET | /enrollments/{enrollment}/completed-videos |
Autenticado |
🔗 Para mais detalhes sobre parâmetros, respostas e exemplos de uso, consulte a documentação completa no Swagger.
A API utiliza o Gumlet Video para gerenciamento e importação de vídeos de forma otimizada. Com isso, é possível importar automaticamente todos os vídeos de uma playlist do Gumlet e vinculá-los a um curso da plataforma.
No arquivo .env, configure os seguintes valores:
GUMLET_API_KEY=your_gumlet_key
GUMLET_API_BASE_URL=https://api.gumlet.com/v1/
GUMLET_API_COLLECTION_ID=your_gumlet_collection_id| Recurso / Descrição | Método | URL | Acesso |
|---|---|---|---|
| Importar Vídeos da Playlist | POST | /videos/import |
Admin |
{
"course_id": "uuid-do-curso",
"playlist_id": "id-da-playlist-no-gumlet"
}-
Os vídeos já existentes do curso informado são removidos.
-
Os vídeos da playlist no Gumlet são buscados via API.
-
Cada vídeo é criado na base local com título, descrição, duração e ordem.
-
A duração total do curso é atualizada automaticamente.
-
A resposta retorna os dados da playlist importada.
-
Todas as rotas que exigem autenticação utilizam Sanctum com tokens.
-
Para obter um token válido, você pode usar os endpoints de autenticação disponíveis no Swagger:
- Registrar usuário:
POST /api/auth/register - Login:
POST /api/auth/login
- Registrar usuário:
-
O token retornado deve ser enviado no header das requisições autenticadas
-
Rotas de administração requerem que o usuário tenha a role admin.
Este projeto está sob a licença MIT.
Feito com 💜 por Yasmin Santana.