Criar uma aplicação Server-Side que irá permitir gerir uma 'mini' solução de e-learning, que terá cursos, alunos e matrículas. Essa aplicação deverá ter as APIs expostas para que uma aplicação WEB possa consumir os recursos.
A modelagem do projeto terá os seguintes modelos.
- Course (name, description, holder_image, duration, date_created, date_updated) ✔️
- Student (name, nickname, phone, avatar, date_created, date_updated) ✔️
- Enrollment (student, course, date_enroll, date_close, score, status) / * Status = (Aprovado, Reprovado, Andamento) ✔️
A API deverá fornecer recursos para:
- Listar todos os cursos do catalogo ✔️
- Cadastrar e atualizar novos cursos ✔️
- Excluir cursos existentes ✔️
- Listar todos os alunos ✔️
- Cadastrar/Editar novos alunos ✔️
- Matricular um aluno em um curso 🛠️
- Remover o aluno de um curso 🛠️
Regras de négocios a ser implementadas:
- Um usuário pode desistir de um curso e informar uma justificativa
- Um usuário não pode estar matriculado em mais de uma curso ao mesmo tempo (matrícula em andamento - ativa)
- Um usuário não pode ser considerado aprovado se ele obter uma nota menor que 6 ao concluir uma matrícula
- Um curso pode notificar (pode ser um print) os usuários que estão matriculados que o curso irá ser expirado em X dias.
- Um curso pode notificar o usuário dono do curso que novas matrículas foram iniciadas ou concluídas
Um recurso importante das APIs é a capacitade de prover filtros para que o front-end possa criar suas soluções otimizando recursos e dando flexibilidade para os usuários. Sendo assim, a API deverá ser possível:
- Filtrar quais matrículas foram reprovadas
- Filtrar todas as matrículas de um determinado aluno
- Filtrar todas as matrículas de um determinado curso
- Filtrar as matrículas que foram concluídas em um determinado período;
- Filtrar as matrículas que foram iniciadas em um determinado período;
- Filtrar alunos cadastrados em um determinado período;