Skip to content

ShopEasy is a containerized e‑commerce boilerplate with an Angular SPA and Spring Boot API (JWT‑secure), backed by MySQL and Kafka, deployable via Docker Compose or Kubernetes.

License

Notifications You must be signed in to change notification settings

victormoni/ShopEasy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ShopEasy

Este repositório contém uma aplicação simples de Loja Virtual, composta por:

  • Frontend: SPA em Angular 20, empacotada e servida por NGINX.
  • Backend: API RESTful em Spring Boot 3.5.0 (Java 21).
  • Banco de Dados: MySQL 8.0.
  • Mensageria: Apache Kafka para eventos de pedidos.
  • Infraestrutura: Docker Compose para orquestração local e Kubernetes (K8s) para deploy em ambiente de nuvem ou cluster local.

📚 Índice

  1. Visão Geral
  2. Tecnologias Utilizadas
  3. Estrutura de Pastas
  4. Execução com Docker Compose
  5. Execução com Kubernetes
  6. Testes
  7. Considerações Finais

💡 Visão Geral

O projeto tem como objetivo fornecer uma base completa para um sistema de e-commerce com:

  • Autenticação JWT
  • CRUD de usuários, produtos e pedidos
  • Eventos Kafka para processar pedidos
  • Observabilidade via Spring Actuator
  • Deploy local com Docker Compose ou em cluster com Kubernetes

⚙️ Tecnologias Utilizadas

Backend

  • Java 21
  • Spring Boot 3.5.0
  • Spring Security
  • Spring Data JPA
  • Apache Kafka
  • MySQL
  • JUnit 5 e Mockito (testes)

Frontend

  • Angular 20
  • RxJS
  • Karma / Jasmine
  • JWT

Infraestrutura

  • Docker
  • Docker Compose
  • Kubernetes (Minikube)
  • ELK Stack (Elasticsearch, Logstash, Kibana)

📂 Estrutura de Pastas

ShopEasy/
├── backend/
|   |── src/
│   ├── pom.xml
│   └── Dockerfile
├── elk                 # Configuração do logstash
├── frontend/
|   ├── src/
│   ├── package.json
│   └── Dockerfile
├── k8s/
├── .gitignore
├── docker-compose.yml  # Manifests do Kubernetes
├── LICENSE             # MIT LICENSE
├── minikube.sh         # Script para rodar o minikube
└── README.md

🛠️ Execução com Docker Compose

Clone o repositório:

git clone https://github.com/victormoni/ShopEasy.git
cd ShopEasy

Suba todos os serviços em modo destacado (detached mode):

docker compose up -d

Acesse a aplicação:

Parando os Containers

docker compose down

🚀 Execução com Kubernetes

Subir infraestrutura

Execute o script minikube.sh pelo terminal como administrador na pasta raiz do projeto:

./minikube.sh

Rode o minikube tunnel

Execute o comando minikube tunnel em outro terminal como administrador para a loja funcionar, deixe o tunnel aberto enquanto estiver usando.

minikube tunnel

Descubra o EXTERNAL-IP e do Ingress NGINX com o comando abaixo:

kubectl get svc -n ingress-nginx

echo "NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE"
echo "ingress-nginx-controller             LoadBalancer   10.109.168.86   192.168.49.2    80:31945/TCP,443:31383/TCP   5m"

Depois acesse no navegador: http://EXTERNAL-IP/"

Pegue o EXTERNAL-IP do comando anterior e troque pelo "localhost" nas URLs que vc for usar, lembre-se que dependendo da URL que for usar é necessário colocar a porta da URL:

  • Exemplo:

http://192.168.49.2:5601


🔧 Testes

Backend

  • Testes backend com JUnit 5 + Mockito
  • Testes de integração com banco H2
  • Uso do Jacoco para Cobertura de Código
mvn clean verify

Frontend:

  • Testes frontend com Karma + Jasmine
ng test

Obrigado por usar a ShopEasy!
Se tiver dúvidas ou sugestões, abra uma issue ou envie um Pull Request.

Autor: Victor Moni Licença: MIT License (consulte o arquivo LICENSE para mais detalhes)

About

ShopEasy is a containerized e‑commerce boilerplate with an Angular SPA and Spring Boot API (JWT‑secure), backed by MySQL and Kafka, deployable via Docker Compose or Kubernetes.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published