Loading repository data…
Loading repository data…
juliuscavalcante / repository
O Projeto MJV Racing Team Management trata-se de uma API REST, uma plataforma para gerenciamento de funcionários e criação de ordens de serviços internas de uma equipe de Fórmula 1. A aplicação possui uma estrutura de CRUD com os principais métodos HTTP. O sistema foi desenvolvido em Java e Spring.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Projeto final desenvolvido para MJV School Java. Para criação desse projeto foi considerado um contexto hipotético, o tema do projeto foi escolhido mediante a um dos requisitos propostos, no qual era o desenvolvimento de API relacionada a categoria de Esportes.
O Projeto MJV Racing Team Management trata-se de uma API REST, uma plataforma para gerenciamento de funcionários e criação de ordens de serviços internas de uma equipe de Fórmula 1. A aplicação possui uma estrutura de CRUD com os principais métodos HTTP (GET/PUT/UPDATE/DELETE).
O sistema foi desenvolvido em Java e Spring com as configurações realizadas com Spring Boot, as entidades foram mapeadas utilizando Spring Data Jpa e Hibernate e os dados foram persistidos no Banco de Dados PostgresSQL.
Para gerenciamento de dependências foi utilizado o Maven, e na parte de segurança foram feitas as configurações com o Spring Security para Autenticação/Autorização de tokens via JWT.
Além do mais, foi usado o Design Pattern MVC, empregando o uso da camada de Repository com a função de agir como intermédio entre outras camadas, o Service para proteger a lógica de negócios da aplicação, os Controllers com a responsabilidade de processar as requisições e gerar as respostas, inclusive, também foi utilizado o padrão de arquitetura de DTOs (Data Transfer Objects), para aumentar a segurança das classes na transferência de dados. Além disso, foram criadas Exceptions personalizadas para gerar logs, e mensagens de erros mais coerentes ao usuário.
Os Testes unitários na camada de Service foram realizados mediante, JUnit, Mockito e Spring MockMVC.
No Frontend as tecnologias utilizadas foram Angular com TypeScript, no qual foram criados componentes visuais a partir do Angular Material.
Foi utilizada a estratégia de Single Table para mapeamento das entidades, desse modo todas as entidades da estrutura de herança são mapeadas em uma única tabela. Essa abordagem torna as consultas mais eficientes e oferece melhor desempenho. Quando é feita a persistência dessa forma, o Hibernate precisa determinar a classe de cada entidade, essa informação é armazenada em uma coluna discriminadora (que não é um atributo de entidade). Essa coluna vem com nome por padrão de Dtype, porém com a anotação @DiscriminatorColumn essa coluna foi alterada para “job_roles”.


Uma das regras de negócio do projeto, é que todos os funcionários (Driver, Engineer, Mechanic) são automaticamente cadastrados como Usuários (USER), exceto funcionários que forem Gerentes (Manager), que serão cadastrados também como Administrador (ADMIN).
Apenas os Gerentes poderão criar, atualizar ou remover o cadastro de outro funcionário.
Todos os funcionários possuem acesso a plataforma através de email e senha previamente cadastrados por um Gerente.
As Ordens de Serviço (Requests) podem ser criadas relacionando Engenheiros e Mecânicos.
As Ordens de Serviços possuem Status e Prioridade e é possível filtra-las através desses atributos.
As Ordens de Serviço não podem ser excluídas, apenas deverão ter seu Status alterado para Fechada (Closed)
Note O projeto foi criado em duas pontas (backend e frontend). O backend foi hospeado no Heroku e o frontend na plataforma Vercel. Repositório Frontend: https://github.com/juliuscavalcante/mjv-projeto-final-front Link da Aplicação: https://mjv-racing.vercel.app/login login: julius@email.com password: 123
Video demonstração dos endpoints sendo utilizados via Postman.
Video demonstração da utilização da plataforma.
Método POST para criar um novo(a) Driver/Engineer/Mechanic/Manager
{
"name": "string",
"cpf": "string",
"email": "string",
"password": "string",
"birthDate": "dd/MM/yyyy"
}
Método POST para criar uma nova Ordem de Serviço
{
"priority": int,
"status": int,
"title": "string",
"notes": "string",
"engineer": int,
"mechanic": int
}
spring.datasource.url = jdbc:postgresql://localhost:5432/nome-do-seu-banco-de-dados
spring.datasource.username = seu-usuario
spring.datasource.password = sua-senha