Apresentamos o NextBuy, uma inovadora ferramenta que revolucionará a forma como você gerencia seu e-commerce bem como a experiência de compra dos seus usuários. Com nosso sistema em sua mão, você pode se cadastrar rapidamente, os items a venda em sua loja, cadastras seus usuários, o carrinho de compras dos seus usuários e forma de pagamento. Simplifique sua vida, torne-se mais sustentável e economize tempo com nossa ferramenta completa de gestão.
- Descrição do Projeto
- Arquitetos Responsáveis
- Funcionalidades
- Acesso ao Projeto
- Execução do Projeto
- Tecnologias utilizadas
- Acesso ao Banco de Dados
- Relatório Técnico
- Desafios
- Documentação Técnica
Este projeto visa criar uma solução abrangente para a gestão eficiente de um sistema de compras e gestão de usuários proporcionando uma experiência fluida tanto para os proprietários quanto para os clientes. Com um sistema web completo, o foco principal é oferecer interfaces intuitivas e endpoints para o cadastro e gerenciamento de clientes, produtos para venda, gestão de carrinho de compras e meio de pagamento.
Os benefícios de utilização são múltiplos. Para os proprietários, o sistema oferece uma gestão centralizada e eficiente de todos os aspectos do seu negócio, desde o cadastro detalhado dos usuários e dos produtos a venda até o acompanhamento dos carrinhos de compras e gastos dos clientes. Isso permite uma melhor tomada de decisões, otimização de recursos e um controle mais preciso sobre as operações.
Para os clientes, o sistema proporciona uma experiência mais personalizada e conveniente. Eles podem facilmente realizar buscas pelo nome do produto ou ID de cadastro do produto, podem adicionar os produtos no carrinho de compras que irá calcular o valor total com base nas quantidades e valores de cada produto. Também é possível excluir os produtos dos carrinhos Além disso, após finalizar a escolhas dos produtos o cliente pode finalizar a compra escolhendo o método de pagamento que lhe convém.
Em resumo, este projeto visa revolucionar a forma como os e-commerces gerenciam seus negócios e interagem com seus clientes, proporcionando uma plataforma completa e eficiente para atender às suas necessidades.
Lucas Mendes |
Aderson Neto |
Felipe Chimin |
Gustavo Makimori |
Pedro Paratelli |
---|
Os endpoints e os dados necessários para consumo da API construída estão disponíveis no tópico abaixo.
Cadastro de usuários/clientes
- Os cadastro serão únicos e criados passando os parametros requisitados.
- Cada usuário terá um ID gerado depois do cadastro o qual será utilizado para relacionar com seu carrinho de compras.
Cadastro de produtos/items
- Serão cadastrados os produtos oferecidos pela sua loja online.
- O usuário poderá, no momento da compra, consultar os produtos e adicionar no carrinho de compras.
Gerenciamento do Carrinho de Compras
- Cada Usuário terá uma seção do carrinho de compras atrelada ao seu ID de usuário de cadastro. Assim será possível persistir os produtos que o usuários colocou no carrinho de compras
Gerenciamento do Meio de Pagamento
- Cada Usuário após terminar de escolher os produtos poderá finalizar sua compra e ir para o método de pagamento. O usuário poderá cadastrar seu cartão de crédito ou escolher outras formas de pagamento para finalizar sua compra.
Você pode acessar o código fonte do projeto inicial ou baixá-lo.
-
Fazer o download do repositorio;
-
Instalar o Docker (Caso esteja em ambiente Windowns instalar WSL);
-
Abrir com a IDE de preferência;
-
Digitar no terminal:; 'docker-compose up'
-
Configurar as varíaveis de ambiente para acessar o banco de dados:
- DATASOURCE_PASSWORD=fiap
- DATASOURCE_USER=fiap
- _MONGO_INITDB_ROOT_DATABASE=items
- _AUTHENTICATION_DATABASE=admin
- _JTW_TOKEN_KEY=user4d1381e44ae829040b6568e9e2b2cfa72c2f95946a04a760key
- _JWT_TOKEN_EXPIRATION=3600000
- Java 17 (Versão atualizada e estável da linguagem Java)
- Gradle (Ferramenta amplamente adotada para gerenciamento de dependências)
- Spring: Boot, Security, MVC, Data JPA, Web (Frameworks populares para desenvolvimento de aplicativos Java)
- Hibernate (Framework de mapeamento objeto-relacional para acesso a dados)
- JPA (Java Persistence API) (Especificação padrão para persistência de dados em Java)
- Lombok (Biblioteca para reduzir a verbosidade do código e automatizar tarefas comuns)
- Jakarta Bean Validation (Especificação para validação de dados em Java)
- Swagger & OpenAPI (Ferramentas e especificações para projetar, criar e documentar APIs RESTful)
- Docker
- PostgresSQL
- MongoDB
- MySQL
A arquitetura utilizada neste projeto baseia-se na combinação de conceitos MVC (Model-View-Controller) e DDD (Domain Driven Design), orientados a microserviços. Essa combinação permite obter os benefícios de ambos os conceitos, utilizando a arquitetura MVC para a divisão das responsabilidades de apresentação e controle de fluxo, e o DDD para criar um modelo de domínio encapsulado e rico.
A versão 17 do Java foi escolhida como base para o projeto devido à sua estabilidade e atualização no momento do desenvolvimento. Para facilitar a configuração e o gerenciamento de dependências, o projeto adotou o Gradle, que possui uma estrutura simples e ampla biblioteca de plugins. Além disso, o Gradle possui uma vasta integração com repositórios centrais e uma documentação extensa, tornando-o uma escolha popular e confiável para a construção e gerenciamento de projetos Java.
Para de reduzir a verbosidade e os famosos códigos boilerplates do código, além de automatizar a geração de getters, setters, construtores e outros métodos comuns, o projeto utilizou o Lombok, uma biblioteca para Java.
O Hibernate é amplamente utilizado no desenvolvimento Java devido às suas vantagens significativas. Ele simplifica o acesso a dados, abstraindo o mapeamento objeto-relacional e automatizando tarefas comuns, aumentando a produtividade dos desenvolvedores. Além disso, oferece portabilidade, permitindo executar aplicativos em diferentes bancos de dados, e suporta consultas flexíveis, cache e gerenciamento de transações, proporcionando um ambiente eficiente e robusto para o desenvolvimento de aplicativos que interagem com bancos de dados relacionais.
Para validar e garantir a integridade dos dados no aplicativo Java, foi utilizado o Jakarta Bean Validation (anteriormente conhecida como Bean Validation 2.0). Essa abordagem eficiente permite verificar se os dados inseridos atendem a padrões específicos, como formato de e-mail, CPF, entre outros. O uso do @Validator com expressões regulares ajuda a manter a consistência dos dados e reduzir erros ou entradas inválidas, oferecendo uma forma poderosa e flexível de validação de dados no projeto.
Para garantir a persistência de dados, foi implementada uma instância do PostgreSQL, MongoDB e MySQL em contêineres Docker, proporcionando isolamento eficiente de responsabilidades, portabilidade, escalabilidade, facilidade de backup e segurança, otimizando o desenvolvimento e a manutenção da aplicação.
- Definir e compreender os relacionamentos.
- Incluir as regras de validações.
- Definição da arquitetura do projeto (DDD/MVC/tecnologias e outros).
- Determinação das responsabilidades dos membros da equipe.
Documentação via SwaggerUI:
User: http://localhost:8080/swagger-ui/index.html#/
Payments: http://localhost:8081/swagger-ui/index.html#/
Items: http://localhost:8083/swagger-ui/index.html#/
Cart: http://localhost:8082/api/swagger-ui/index.html#/
Postman Documentation:
Items Collection