Connect Courses API é uma estrutura backend para uma plataforma EAD.
O projeto teve como objetivo o aprofundamento de meus conhecimentos em PHP e no Framework Laravel, bem como o aprendizado de Docker em aplicações multi-container.
Em andamento. Na etapa de testes de integração.
- Autenticação de usuário;
- Recuperação de senha;
- Listagem de cursos, módulos e aulas;
- Criação e fechamento de tickets de suporte pelos alunos;
- Resposta de mensagens de support pelos professores;
- Suporta upload das imagens dos eventos;
- Fornece uma API com endpoints para todas as operações listadas acima.
MySQL Server - Sistema de gerenciamento de banco de dados utilizado na persistência das informações.
Laravel - Framework PHP utilizado na construção da API. A versão utilizada é a 10.x.
Redis - Banco de dados em memória usado para armazenar o cache.
Docker - Plataforma utilizada para padronizar o ambiente de execução e facilitar a portabilidade.
Docker Compose - Ferramenta utilizada para trabalhar com os diversos contêineres Docker que compõem a aplicação, pois é um projeto multi-container.
Nginx - Servidor web que interage com os diferentes serviços da aplicação, presentes em cada contêiner.
- Ter o Docker instalado: https://docs.docker.com/engine/install/
- Ter o Docker Compose instalado: https://docs.docker.com/compose/install/
- Clone o Repositório:
- Abra o terminal ou prompt de comando e navegue até o diretório onde deseja armazenar o projeto.
- Use o comando
git clone https://github.com/JD-Rodrigues/connect-courses_ead-plataform-api.git
- Instale as dependências:
- Navegue até o diretório do projeto recém-clonado, usando o terminal.
- Configure o manco de dados e servidor de e-mail no arquivo
.env
:
- Renomeie o arquivo
.env.example
para.env
; - Atribua as informações de seu banco de dados às seguintes variáveis de ambiente:
DB_DATABASE
,DB_USERNAME
eDB_PASSWORD
. - Adicione as informações de seu servidor de e-mail às variáveis de ambiente iniciadas com o prefixo
MAIL_
.
- Execute o Docker Compose na pasta raiz do projeto, para fazer a build e subir os contêineres:
docker compose up -d
. - Rodando a aplicação:
- Liste os contêineres da aplicação que estão em execução:
docker ps
; - Identifique o id do contêiner do Laravel (o de nome
connect-courses_ead-plataform-api-app
) e em seguida acesse-o:docker exec -it id-do-contêiner-laravel bash
(substituaid-do-contêiner-laravel
pelo id do contêiner). Assim, você acessará o contêiner através de um terminal bash. - Execute o comando
composer install
para instalar as dependências do projeto Laravel listadas no arquivo composer.json. - Execute o comando
php artisan key:generate
, para gerar uma chave criptografada para a aplicação. - Execute o comando
php artisan migrate
para criar as tabelas do banco de dados.
- Testando a rota principal da API:
- Abra um navegador da web e acesse
http://localhost:8888
. O retorno esperado é:Esta é a rota base da API Connect Courses!
POST /login
- Faz login, utilizando as seguintes informações de usuário obrigatórias enviadas via corpo da requisição (não requer autenticação):
email
: endereço de email em formato padrão;password
: string.
Retorna um token de autenticação, requerido na maioria dos endpoints. É recomendado adicionar este token no header Àuthorization
logo após recebê-lo, para que ele não seja perdido. O valor enviado neste header deve ser composto da palavra Bearer
seguida de espaço e o token retornado no momento do login do usuário. Ex.: Bearer 2|x45fdsashdushduiayouioduisfiseroiserusirsicr
.
GET /me
- Retorna informações sobre o usuário logado.
POST /logout
- Faz logout na aplicação. Requer autenticação.
POST /forgot-password
- Envia um link de redefinição de senha para o e-mail informado, se esse e-mail estiver cadastrado na tabela de usuários do banco de dados. Logo, o email
é a informação obrigatória para ser enviada no body desta requisição.
POST /reset-password
- Redefine a senha de usuário. As seguintes informações deverão ser passadas no body da requisição:
-
email
-
password
-
password_confirmation
-
token
(token contido no parâmetro do link de redefinição de senha enviado para o e-mail)
GET /courses
- Lista todos os cursos. Requer autenticação.
GET /course/{id}
- Retorna o curso cujo id for passado no parâmetro da url. Requer autenticação.
GET /course/{id}/modules
- Lista todos os módulos do curso cujo id for passado no parâmetro da url. Requer autenticação.
GET /modules/{id}/lessons
- Lista todas as aulas do módulo cujo id for passado no parâmetro da url. Requer autenticação.
GET /lesson/{id}
- Retorna a aula cujo id for passado no parâmetro da url. Requer autenticação.
GET /supports
- Lista todos os tickets de suporte criados pelos estudantes. Requer autenticação.
GET /my-supports
- Lista todos os tickets de suporte criados pelos estudante logado. Requer autenticação.
POST /supports
- Cria um novo ticket de suporte. O body da requisição deverá conter:
-
lesson_id
: uuid; -
status_code
: Opções possíveis: "T", "S" ou "C", significando, respectivamente, "Awaiting Teacher", "Awaiting Student" e "Closed" -
description
: Texto contendo a dúvida/solicitação de ajuda.
Requer autenticação.
POST /support-replies
- Cria uma nova resposta a um ticket de suporte. O body da requisição deverá conter:
-
user_id
: uuid; -
support_id
: uuid; -
description
: texto da resposta.
Requer autenticação.
Domingos Rodrigues