Skip to content

Sistema de cursos online com API RESTful em Laravel 12, autenticação via Sanctum e documentação interativa via Swagger.

Notifications You must be signed in to change notification settings

santyasm/dev-learn-api

Repository files navigation

📚 Dev Learn API

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).

Swagger Documentation

🚀 Tecnologias e Versões

Badge Descrição
Laravel Framework principal da aplicação.
PHP Linguagem de programação (versão de desenvolvimento).
MySQL Banco de dados relacional.
Composer Gerenciador de dependências.
Sanctum Autenticação simples baseada em tokens (API).
Swagger Documentação interativa da API.

🛠️ Requisitos de Instalação

Para rodar este projeto localmente, você precisa ter:

  1. Git
  2. PHP (mínimo 8.2, recomendado 8.4)
  3. Composer (versão 2.x)
  4. Banco de dados configurado (MySQL, PostgreSQL ou SQLite)

⚙️ Configuração e Instalação Local

Siga estes passos para configurar e executar o projeto em seu ambiente local:

1. Clonar o Repositório

git clone https://github.com/santyasm/dev-learn-api
cd dev-learn-api

2. Configurar Variáveis de Ambiente

Crie o arquivo .env a partir do exemplo fornecido:

cp .env.example .env

Edite 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_mysql

3. Instalar Dependências

Instale todas as dependências PHP necessárias usando o Composer:

composer install

4. Setup Inicial

Execute 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:seed

5. Iniciar o Servidor

Inicie o servidor de desenvolvimento local do Laravel:

php artisan serve

🌐 Acesso à API e Documentação

O servidor da API está disponível em:
https://dev-learn-api.onrender.com

🔹 Endpoints Principais

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.

🎬 Integração com Gumlet

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.

🔹 Variáveis de Ambiente

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

Exemplo de Payload:

{
    "course_id": "uuid-do-curso",
    "playlist_id": "id-da-playlist-no-gumlet"
}

Funcionamento:

  1. Os vídeos já existentes do curso informado são removidos.

  2. Os vídeos da playlist no Gumlet são buscados via API.

  3. Cada vídeo é criado na base local com título, descrição, duração e ordem.

  4. A duração total do curso é atualizada automaticamente.

  5. A resposta retorna os dados da playlist importada.


💡 Dicas de Uso

  • 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
  • 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.

📄 Licença

Este projeto está sob a licença MIT.

Feito com 💜 por Yasmin Santana.

About

Sistema de cursos online com API RESTful em Laravel 12, autenticação via Sanctum e documentação interativa via Swagger.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages