VOLTAR

Imagem do projeto

Administração de Proudutos e Usuários

Sistema de gerenciamento de produtos e usuários.

Sobre o sistema

O sistema deve gerenciar de forma eficiente o cadastro de usuários, produtos e suas respectivas categorias. Cada usuário deve ser registrado com informações detalhadas, incluindo nome, e-mail, telefone, data de nascimento e uma senha de acesso segura.

Além disso, usuários com privilégios administrativos terão acesso a uma área exclusiva, a qual proporciona a administração dos cadastros de usuários, produtos e categorias de forma centralizada e eficaz. Isso possibilita uma gestão facilitada, contribuindo para a eficiência e organização do sistema como um todo.


Tecnologias e Metodologias Utilizadas

1° Passo

CRUD

Ferramentas

Java, Spring Boot, Maven, H2, Postgresql, Postman, Spring Data JPA

Detalhes

Este projeto foi baseado na versão LTS do Java 17. Atualmente encontra-se publicado nas plataformas, Railway e Netlify. Esta aplicação corporativa é focada em escalabilidade e desempenho, aproveitando as últimas características do Java 17 para otimizar a eficiência e segurança do código.

A implementação de uma arquitetura modular tem contribuído significativamente para facilitar a manutenção do sistema. A integração de tecnologias modernas, desde a fase de desenvolvimento até a fase de produção, fortaleceu a solidez da solução, proporcionando uma experiência robusta aos usuários.

Os resultados obtidos até o momento são promissores, e estou confiante de que este projeto está plenamente alinhado com as melhorias oferecidas pela versão LTS do Java. Este ambiente de produção reflete não apenas a eficiência do código, mas também a capacidade de adaptação e integração das mais recentes inovações da linguagem Java.

2º Passo

Testes automatizados

Ferramentas

JUnit, Mockito, MockBean

Detalhes

Foram implementados testes automatizados por meio do JUnit para testes de unidade, Mockito para simular comportamentos de objetos e o MockBean para testes de integração, garantindo cobertura abrangente e confiabilidade no desenvolvimento.

3º Passo

Validação e segurança

Ferramentas

Bean Validation, Spring Security, JWT, OAuth2

Detalhes

Foi implementadas as camadas de validação e segurança para assegurar a integridade e proteção dos dados. Utilizei a especificação Bean Validation para realizar validações em tempo de execução, garantindo que os dados atendam aos requisitos estabelecidos.

Para controle de acesso, adotei o Spring Security, uma ferramenta poderosa que facilita a implementação de autenticação e autorização.

Na gestão de identidades, escolhi utilizar JSON Web Tokens (JWT) em conjunto com OAuth2. Essas tecnologias proporcionam um método seguro e eficiente para autenticar usuários, garantindo a confidencialidade e integridade das informações transmitidas entre o cliente e o servidor.

4º Passo

Domínio e ORM, autorizações

Ferramentas

Modelo de domínio, JPA, SQL seed

Detalhes

Para se ter uma gestão eficiente de autorizações, utilizou-se a tecnologia JPA (Java Persistence API), um modelo de domínio bem elaborado, para mapeamento objeto-relacional e a semente (seed) SQL para inicialização do banco de dados, projetado de forma a abranger cenários complexos, proporcionando uma representação conceitual completa.

O modelo de domínio foi projetado de forma a abranger cenários complexos, proporcionando uma representação conceitual completa.

Para garantir a segurança e autorizações customizadas, fou implementado um sistema abrangente. As autorizações foram personalizadas em nível de serviço, permitindo controle granular sobre as operações realizadas.

A gestão de tokens também foi uma prioridade, incluindo a implementação de refresh tokens para manter a autenticação do usuário. Adotei pré-autorização de métodos para controlar o acesso a determinadas funcionalidades, garantindo que apenas usuários autorizados possam executar operações específicas.

5º Passo

Consultas ao banco de dados

Ferramentas

Spring Data JPA, JPQL, SQL

Detalhes

Foi adotada uma abordagem abrangente para consultas ao banco de dados, aproveitando as funcionalidades do Spring Data JPA, JPQL e SQL para otimizar o acesso e manipulação de dados.

Nas consultas mais simples e operações básicas de persistência, foi usado o Spring Data JPA, o que facilitou a criação de repositórios de dados e a execução de consultas de maneira eficiente, simplificando significativamente o código.

O desafio das consultas N+1, comuns em ORM foi abordado por meio da linguagem JPQL (Java Persistence Query Language), que permitiu definir consultas mais específicas e orientadas a objetos, evitando o problema das múltiplas consultas desnecessárias, resultando em um desempenho mais eficaz.

Contribução e Testes

Repositório:

tiagogomes.dev.br/dscatalog-repo

Projeto Publicado:

tiagogomes.dev.br/dscatalog

Logins para testes:

Username: [email protected]
Senha: 123456
Authotities: ["ROLE_OPERATOR","ROLE_ADMIN"]
---
Username: [email protected]
Senha: 123456
Authotities: ["ROLE_OPERATOR"]

Diretório estruturado em Monorepo

Dscatalog
  ./backend
  ./frontweb

Rode o backend:

cd backend && ./mvnw spring-boot:run

Rode o frontend:

cd frontweb && yarn && yarn dev

Collection do Postman

Collection: Clique aqui para baixar, depois importe no Postman

Environment: Clique aqui para baixar, depois importe no Postman

Licença

Este projeto está sob licença do MIT. Veja o arquivo LICENSE para mais detalhes.