O Lab PCP - Gestão Educacional (Back-End) é parte de um sistema web de gestão educacional desenvolvido como parte do projeto avaliativo do módulo 3.
Este sistema proporciona funcionalidades essenciais para a administração de instituições educacionais, permitindo o cadastro de turmas, conteúdos, docentes e alunos, além de oferecer recursos para alocação de professores, gerenciamento de notas e controle de acesso dos usuários.
Desenvolvido utilizando Java, Spring, API REST, PostgreSQL e Docker, o Educação FullStack emprega tecnologias modernas e práticas de desenvolvimento, incluindo Spring Security para controle de segurança, PostgreSQL para armazenamento de dados e GitHub para versionamento do código.
Além disso, a metodologia de desenvolvimento utiliza o Kanban no Trello para organização das tarefas, garantindo uma abordagem ágil e eficiente.
O sistema atende a uma variedade de papéis de usuários, como administradores, docentes e alunos, cada um com suas permissões específicas de acesso e funcionalidades disponíveis.
Com uma arquitetura sólida e uma implementação cuidadosa das regras de negócio, o Lab PCP - Gestão Educacional (Back-End) é uma solução completa para a gestão educacional, proporcionando uma experiência integrada e eficaz para todas as partes envolvidas no processo educativo.
Quando integrada à parte Front-End, forma um projeto Fullstack de Gestão Educacional.
Buscando facilitar o dia a dia da rotinas administrativas, o Lab PCP permite:
- Gerenciar corpo docente: professores, recrutadores, corpo pedagógico;
- Gerenciar cursos e suas disciplinas;
- Gerenciar alunos, suas matriculas, notas e pontuação geral.
- Java Spring Boot (Link Spring initializr)
- PostgreSQL
- Git e Gitflow (para versionamento)
- Trello (para gerenciamento de projeto)
- Kanban (metodologia ágil de gestão de projetos)
- Git para clonar o repositório
- Docker para rodar o projeto em imagens
- JDK 21 para rodar o código Java
- PostgreSQL para o banco de dados
- APACHE Maven para compilação do projeto
Para baixar o projeto do Git e executá-lo localmente, siga os passos abaixo:
- Clone o repositório do Git:
git clone https://github.com/FullStack-Education/M3P-BackEnd-Squad3.git lab-pcp
- Navegue até o diretório do projeto:
cd lab-pcp
- Execute o subir os serviços do docker.
docker compose up -d
- (Opcional) Rodar a aplicação Front-End para visualizar o projeto. Veja mais
- Clone o repositório do Git:
git clone https://github.com/FullStack-Education/M3P-BackEnd-Squad3.git lab-pcp
- Navegue até o diretório do projeto:
cd lab-pcp
- Execute o subir serviço de banco de dados.
docker compose up -d labpcp-db
- (Opcional) Rodar a aplicação Front-End para visualizar o projeto. Veja mais
-
Excute o tutorial do IntelliJ IDEA para subir a aplicação
-
Acesso a url swagger-ui
-
ADMIN
- Login: [email protected]
- Senha: [email protected]
-
PEDAGOGICO
- Login: [email protected]
- Senha: [email protected]
-
RECRUITER (Recrutador)
- Login: [email protected]
- Senha: [email protected]
-
PROFESSOR
- Login: [email protected]
- Senha: [email protected]
-
ALUNO
- Login: [email protected]
- Senha: [email protected]
- Descrição: Retorna todos os alunos cadastrados.
- Resposta:
- 200 OK: Retorna uma lista de alunos.
alunoData
(array deAlunoEntity
):id
: ID do alunonome
: Nome do alunodataNascimento
: Data de nascimentotelefone
: Telefonegenero
,estadoCivil
,email
,cpf
,rg
,cidade
, etc.
- 200 OK: Retorna uma lista de alunos.
- Descrição: Retorna um aluno pelo seu ID.
- Parâmetros:
alunoId
(path): ID do aluno (inteiro, obrigatório)
- Resposta:
- 200 OK: Retorna os dados do aluno com o ID fornecido.
- Campos: iguais ao objeto
AlunoEntity
acima.
- Campos: iguais ao objeto
- 400 Bad Request: Erro de requisição inválida.
- 200 OK: Retorna os dados do aluno com o ID fornecido.
- Descrição: Cria um novo aluno.
- Corpo da Requisição (
AlunoRequest
):nome
: Nome do alunodata_nascimento
: Data de nascimento (formatodate
)telefone
,genero
,estadoCivil
,email
,cpf
,rg
, etc.
- Resposta:
- 201 Created: Aluno criado com sucesso.
- 400 Bad Request: Requisição inválida ou dados incompletos.
- Descrição: Atualiza um aluno pelo ID.
- Parâmetros:
alunoId
(path): ID do aluno (obrigatório)
- Corpo da Requisição (
AlunoUpdateRequest
):- Campos semelhantes ao
AlunoRequest
para dados que serão atualizados.
- Campos semelhantes ao
- Resposta:
- 200 OK: Aluno atualizado.
- 400 Bad Request: Requisição inválida.
- Descrição: Exclui um aluno pelo ID.
- Parâmetros:
alunoId
(path): ID do aluno
- Resposta:
- 204 No Content: Aluno excluído.
- 400 Bad Request: Requisição inválida.
- Descrição: Retorna todos os docentes cadastrados.
- Resposta:
- 200 OK: Lista de docentes.
docenteData
(array deDocenteEntity
):id
: ID do docentenome
,dataEntrada
,telefone
,email
,cpf
, etc.
- 200 OK: Lista de docentes.
- Descrição: Retorna um docente pelo ID.
- Parâmetros:
docenteId
(path): ID do docente
- Resposta:
- 200 OK: Dados do docente.
- 400 Bad Request: Requisição inválida.
- Descrição: Cadastra um novo docente.
- Corpo da Requisição (
DocenteCreateRequest
):nome
,dataNascimento
,telefone
,genero
,cpf
, etc.
- Resposta:
- 201 Created: Docente criado.
- 400 Bad Request: Requisição inválida.
- Descrição: Atualiza dados de um docente.
- Corpo da Requisição (
DocenteUpdateRequest
): Campos a serem atualizados. - Resposta:
- 200 OK: Docente atualizado.
- 400 Bad Request: Requisição inválida.
- Descrição: Retorna todos os cursos cadastrados.
- Resposta:
- 200 OK: Lista de cursos.
cursoData
(array deCursoEntity
): comid
,nome
, etc.
- 200 OK: Lista de cursos.
- Descrição: Retorna um curso específico.
- Parâmetros:
cursoId
(path): ID do curso.
- Resposta:
- 200 OK: Dados do curso.
- 400 Bad Request: Requisição inválida.
- Descrição: Cadastra um novo curso.
- Corpo da Requisição (
CursoRequest
):nome
: Nome do curso.
- Resposta:
- 201 Created: Curso cadastrado.
- 400 Bad Request: Requisição inválida.
- Descrição: Atualiza um curso específico.
- Corpo da Requisição (
CursoRequest
): Campos atualizados. - Resposta:
- 200 OK: Curso atualizado.
- 400 Bad Request: Requisição inválida.
- Descrição: Retorna todas as turmas cadastradas.
- Resposta:
- 200 OK: Lista de turmas.
turmaData
(array deTurmaEntity
): comid
,nome
,dataInicio
,dataFim
,hora
, etc.
- 200 OK: Lista de turmas.
- Descrição: Retorna dados de uma turma.
- Parâmetros:
turmaId
(path): ID da turma.
- Resposta:
- 200 OK: Dados da turma.
- 400 Bad Request: Requisição inválida.
- Descrição: Cadastra uma nova turma.
- Corpo da Requisição (
TurmaCreateRequest
):nome
,id_curso
,dataInicio
,dataFim
,hora
, etc.
- Resposta:
- 201 Created: Turma cadastrada.
- 400 Bad Request: Requisição inválida.
- Descrição: Atualiza uma turma.
- Corpo da Requisição (
TurmaUpdateRequest
): Dados a serem atualizados. - Resposta:
- 200 OK: Turma atualizada.
- 400 Bad Request: Requisição inválida.
- Descrição: Exclui uma turma.
- Parâmetros:
turmaId
(path): ID da turma.
- Resposta:
- 204 No Content: Turma excluída.
- 400 Bad Request: Requisição inválida.
Agradecemos o seu interesse em contribuir para o projeto :) Para participar do desenvolvimento e melhora-lo o projeto, siga estas diretrizes:
- Mantenha um estilo de código consistente com as convenções do Java.
- Utilize boas práticas de programação, como nomenclatura descritiva.
- Evite códigos duplicados quando possivel.
Este projeto segue o modelo de branch GitFlow para gerenciamento de branches e versionamento. Para contribuir:
- Crie uma nova branch a partir da branch
develop
para desenvolver novos recursos ou correções:git checkout develop git pull origin develop git checkout -b feature/nome-da-feature
- Faça commits na sua branch e envie as alterações para o repositório remoto:
git add . git commit -m "Implementação da feature X" git push origin feature/nome-da-feature
- Abra um Pull Request (PR) para mesclar suas alterações na branch develop após a revisão e aprovação:
- Descreva claramente o propósito das suas alterações no PR.
- Mantenha um histórico de commits limpo e organizado.
Algumas melhorias que podem ser implementadas no projeto incluem:
- Implementação de classes genéricas para redução de código repetitivo
- Novas funcionalidades para a administração de uma instituição educacional.