O desenvolvimento de um aplicativo de e-commerce chamado "best-commerce" utilizando o framework Springboot em Java. Para melhorar a eficiência, segurança e qualidade do sistema, segui as melhores práticas de desenvolvimento em Java e Springboot, utilizando diversas tecnologias.
Para garantir uma maior flexibilidade e separação de responsabilidades, utilizei DTO em vez de DAO para trafegar os dados entre as camadas, seguindo uma arquitetura em camadas padrão, incluindo as camadas de repository, service e controller, além das entidades do modelo.
Para simplificar o acesso aos dados do banco de dados, utilizei o Spring Data JPA, um módulo do Spring que oferece uma implementação padrão das interfaces repository. Além disso, utilizei o Docker para rodar o banco de dados PostgreSQL e o PGAdmin, e para empacotar a API em um contêiner Docker, garantindo uma maior facilidade de implantação e portabilidade do aplicativo.
Para garantir a segurança da aplicação, implementei a autenticação do usuário usando o Spring Security, e configurei perfis para os ambientes de desenvolvimento e de teste. No ambiente de desenvolvimento, utilizei o banco de dados PostgreSQL, enquanto no ambiente de teste, utilizei o banco de dados H2.
O modelo de dados do aplicativo consistiu nas entidades Usuário, Pedido, Loja, Produto e Categoria, e utilizei um diagrama conceitual para visualizar a relação entre essas entidades. Para documentar os endpoints da API, utilizei o Swagger UI.
Além disso, para garantir a qualidade do código, criei testes unitários em algumas camadas do sistema, incluindo as camadas de serviço. Também adicionei o tratamento de erros personalizados, que é extremamente importante em uma aplicação de e-commerce, pois pode ajudar a identificar e corrigir problemas rapidamente, reduzindo o impacto sobre os usuários e evitando perda de vendas.
Em resumo, o objetivo do meu trabalho foi criar um aplicativo de e-commerce funcional e escalável, seguindo as melhores práticas de desenvolvimento em Java e Springboot, e utilizando tecnologias como Docker, DTO, Swagger UI, testes unitários e tratamento de erros personalizados para melhorar a eficiência, segurança e qualidade do sistema.
Experimente live demo completa:
Criar e executar o projeto em seu ambiente de desenvolvimento local é muito fácil. Certifique-se de ter o Git, JDK17, Maven e Docker(No uso do docker não e necessario a instalação da JDK17 e Maven) instalados e siga as instruções abaixo. Precisa de informações adicionais? entre em contato no e-mail [email protected]. (Estas instruções pressupõem que você esteja instalando como um usuário root.)
-
Clone o código fonte
git clone [email protected]:joosecj/best-commerce-ws.git
-
Navegue até a pasta backend:
cd backend
-
Execute os comandos:
docker compose up -d
-
Ao executar o projeto, pode ser acessado um navegador da Web em http://IP CONTAINER:8080:
-
Obs: para descobrir o IP do container, digite o comando a seguir:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' api-bestcommerce
-
Interfaçe do Swagger UI para utilizar/testar os endpoints:
http://IPCONTAINER:8080/swagger-ui/index.html
-
Documentação do Swagger contendo todos os endpoints que pode ser importada para o postman e fazer as requisições GET/PUT/DELETE E UPDATE.
-
Obs: projeto precisa está em execução.
http://IPCONTAINER:8080/v3/api-docs
- Todos os locais que estão localhost:8080, substitua para IP CONTAINER:8080
-
Clone o código fonte
git clone [email protected]:joosecj/best-commerce-ws.git
-
Navegue até a pasta backend.
cd backend
-
Execute o comando:
- Obs: para alterar o perfil, só alterar o test para dev, sendo que ambiente de dev necessita do banco de dados PosgreSQL já o test roda com banco H2 em memoria.
./mvnw spring-boot:run -Dspring.profiles.active=test
-
Ao executar o projeto, pode ser acessado um navegador da Web em http://localhost:8080/
-
Interfaçe do Swagger UI para utilizar/testar os endpoints aqui.
-
Documentação do Swagger contendo todos os endpoints que pode ser importada para o postman e fazer as requisições GET/PUT/DELETE E UPDATE, através do link. Obs: projeto precisa está em execução.
- email: [email protected]
- senha: admin123