{"id":26562579,"url":"https://github.com/orionwilx/microcommerce-springboot","last_synced_at":"2026-03-09T05:32:09.092Z","repository":{"id":282631471,"uuid":"949186185","full_name":"Orionwilx/MicroCommerce-SpringBoot","owner":"Orionwilx","description":"E-commerce system based on microservices architecture built with Spring Boot. This architecture enables scalability, resilience, and independent development of each component.","archived":false,"fork":false,"pushed_at":"2025-06-04T21:51:39.000Z","size":167,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-15T00:17:22.214Z","etag":null,"topics":["backend","java","microservice","mongodb","postgresql","spring-boot","sql"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Orionwilx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-15T21:42:12.000Z","updated_at":"2025-05-31T20:39:21.000Z","dependencies_parsed_at":"2025-05-31T16:58:09.809Z","dependency_job_id":"60dc38d9-9dd7-41ac-aa70-4bcb568f7e39","html_url":"https://github.com/Orionwilx/MicroCommerce-SpringBoot","commit_stats":null,"previous_names":["orionwilx/microservice-java_springboot","orionwilx/microcommerce-springboot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Orionwilx/MicroCommerce-SpringBoot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orionwilx%2FMicroCommerce-SpringBoot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orionwilx%2FMicroCommerce-SpringBoot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orionwilx%2FMicroCommerce-SpringBoot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orionwilx%2FMicroCommerce-SpringBoot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Orionwilx","download_url":"https://codeload.github.com/Orionwilx/MicroCommerce-SpringBoot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Orionwilx%2FMicroCommerce-SpringBoot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272252653,"owners_count":24900706,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-26T02:00:07.904Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","java","microservice","mongodb","postgresql","spring-boot","sql"],"created_at":"2025-03-22T15:18:10.391Z","updated_at":"2026-03-09T05:32:09.054Z","avatar_url":"https://github.com/Orionwilx.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# E-Commerce Microservices System\n\n## Description\nE-commerce system based on microservices architecture built with Spring Boot. This architecture enables scalability, resilience, independent development, and now includes observability and monitoring with Prometheus and Grafana.\n\n## Architecture\n\n![Microservices Architecture](https://www.hiberus.com/crecemos-contigo/wp-content/uploads/2019/03/microservicios-estructura-1024x550.png)\n\n### Implemented Services:\n- **Product Service**: Manages product catalog (MongoDB)\n- **Order Service**: Handles orders and checkout (PostgreSQL)\n- **Inventory Service**: Stock control (PostgreSQL)\n- **Payment Service**: Payment processing (PostgreSQL)\n- **Eureka Server**: Service discovery for registering and locating microservices\n- **API Gateway**: Single entry point for all client requests\n- **Prometheus**: Monitoring and metrics collection\n- **Grafana**: Visualization of metrics and dashboards\n\n## Technologies Used\n- **Spring Boot**: Main development framework\n- **Spring WebFlux**: Reactive programming for high-performance APIs\n- **Spring Data JPA/MongoDB**: Data access\n- **Docker \u0026 Docker Compose**: Containerization and orchestration\n- **PostgreSQL \u0026 MongoDB**: SQL and NoSQL databases\n- **Eureka**: Service registration and discovery\n- **Spring Cloud Gateway**: API Gateway for centralized routing\n- **Spring Actuator**: Exposes operational endpoints for monitoring\n- **Prometheus \u0026 Grafana**: Monitoring and visualization\n- **Maven**: Dependency management and build\n- **JUnit \u0026 Mockito**: Unit and integration testing\n\n## Key Features\n- Microservices-based architecture\n- Reactive programming with WebFlux\n- RESTful APIs\n- Docker containerization\n- Polyglot persistence (SQL and NoSQL)\n- Service discovery with Eureka\n- Centralized routing with API Gateway\n- Observability and monitoring with Prometheus \u0026 Grafana\n- Metrics exposure with Spring Actuator\n- Unit and integration tests\n\n## Setup and Deployment\n```bash\n# Clone the repository\ngit clone https://github.com/username/ecommerce-microservices.git\n\n# Build services\n./mvnw clean package -DskipTests\n\n# Deploy with Docker Compose\ndocker-compose up -d\n```\n\n## Monitoring \u0026 Observability\n- **Prometheus**: http://localhost:9090\n- **Grafana**: http://localhost:3000 (default user: admin, password: admin)\n- **Spring Actuator Prometheus Endpoint**: `/actuator/prometheus` en cada microservicio\n- **Prometheus config**: Ver `prometheus.yml` para los targets de scraping\n\n## Centralized Logs and Observability\nThe system now includes:\n- **Loki**: stores and centralizes logs from all microservices.\n- **Promtail**: collects logs from Docker containers and sends them to Loki.\n- **Grafana**: allows you to visualize and query logs stored in Loki, alongside Prometheus metrics.\n\n### How does it work?\n- Each Docker container generates logs in local files.\n- Promtail reads these files and sends them to Loki.\n- Loki stores the logs and Grafana visualizes them, enabling advanced searches and correlation with metrics.\n\n### Quick Access\n- **Loki**: http://localhost:3100 (API)\n- **Grafana**: http://localhost:3000 (\"Explore\" section for logs)\n\n### Example query in Grafana\nGo to Grafana → Explore → select the Loki data source and run:\n```\n{job=\"docker\"}\n```\nThis will show logs from all Docker containers.\n\n## Main API Endpoints\nAll endpoints are available through the API Gateway at: `http://localhost:8090`\n\n```\n# Products\nGET    /api/products          - List all products\nPOST   /api/products          - Create product\nGET    /api/products/{id}     - View product details\nPUT    /api/products/{id}     - Update product\nDELETE /api/products/{id}     - Delete product\n\n# Payments\nGET    /api/payments          - List all payments\nPOST   /api/payments          - Process new payment\nGET    /api/payments/{id}     - View payment details\nPUT    /api/payments/{id}     - Update payment\nDELETE /api/payments/{id}     - Delete payment\n\n# Orders\nGET    /api/orders            - List all orders\nPOST   /api/orders            - Create order\nGET    /api/orders/{id}       - View order details\nPUT    /api/orders/{id}       - Update order\nDELETE /api/orders/{id}       - Delete order\n\n# Inventory\nGET    /api/inventory         - List all inventory products\nPOST   /api/inventory         - Create new inventory product\nGET    /api/inventory/{id}    - View inventory product details\nPUT    /api/inventory/{id}    - Update inventory product\nDELETE /api/inventory/{id}    - Delete inventory product\n```\n\n## Infrastructure Services\n- **Eureka Server**: http://localhost:8761\n- **API Gateway**: http://localhost:8090\n- **Prometheus**: http://localhost:9090\n- **Grafana**: http://localhost:3000\n\n## Challenges Overcome\n- Integration of reactive programming with relational databases\n- Docker container network configuration\n- Implementation of resilience patterns\n- Configuration of multiple service replicas with Docker Compose\n- Centralized monitoring and observability\n\n## Recommendations for Project Enhancement\n- ~~Implement API Gateway (Spring Cloud Gateway)~~\n- ~~Add service discovery (Eureka)~~\n- ~~Expose metrics with Spring Actuator~~\n- ~~Integrate Prometheus and Grafana for monitoring~~\n- Implement Circuit Breaker with Resilience4j\n- Add authentication/authorization with OAuth2/JWT\n- ~~Implement unit and integration tests~~\n- Incorporate API documentation with Swagger/OpenAPI\n\n# **_Spanish Version_**\n\n# Microservicio de Comercio Electrónico\n\n## Descripción\nSistema de comercio electrónico basado en microservicios construido con Spring Boot. Esta arquitectura permite escalabilidad, resiliencia, desarrollo independiente y ahora incluye observabilidad y monitoreo con Prometheus y Grafana.\n\n## Arquitectura\n\n![Arquitectura de Microservicios](https://www.hiberus.com/crecemos-contigo/wp-content/uploads/2019/03/microservicios-estructura-1024x550.png)\n\n### Servicios implementados:\n- **Product Service**: Gestiona el catálogo de productos (MongoDB)\n- **Order Service**: Maneja pedidos y checkout (PostgreSQL)\n- **Inventory Service**: Control de stock (PostgreSQL)\n- **Payment Service**: Procesamiento de pagos (PostgreSQL)\n- **Eureka Server**: Servicio de descubrimiento que registra y localiza microservicios\n- **API Gateway**: Punto único de entrada para todas las solicitudes de clientes\n- **Prometheus**: Monitoreo y recolección de métricas\n- **Grafana**: Visualización de métricas y dashboards\n\n## Tecnologías utilizadas\n- **Spring Boot**: Framework principal de desarrollo\n- **Spring WebFlux**: Programación reactiva para APIs de alto rendimiento\n- **Spring Data JPA/MongoDB**: Acceso a datos\n- **Docker y Docker Compose**: Contenerización y orquestación\n- **PostgreSQL y MongoDB**: Bases de datos SQL y NoSQL\n- **Eureka**: Registro y descubrimiento de servicios\n- **Spring Cloud Gateway**: API Gateway para enrutamiento centralizado\n- **Spring Actuator**: Exposición de endpoints operativos para monitoreo\n- **Prometheus y Grafana**: Monitoreo y visualización\n- **Maven**: Gestión de dependencias y build\n- **JUnit \u0026 Mockito**: Pruebas unitarias y de integración\n\n## Características principales\n- Arquitectura basada en microservicios\n- Programación reactiva con WebFlux\n- APIs RESTful\n- Contenerización con Docker\n- Persistencia poliglota (SQL y NoSQL)\n- Descubrimiento de servicios con Eureka\n- Enrutamiento centralizado con API Gateway\n- Observabilidad y monitoreo con Prometheus y Grafana\n- Exposición de métricas con Spring Actuator\n- Tests unitarios y de integración\n\n## Configuración y despliegue\n```bash\n# Clonar el repositorio\ngit clone https://github.com/usuario/ecommerce-microservices.git\n\n# Construir los servicios\n./mvnw clean package -DskipTests\n\n# Desplegar con Docker Compose\ndocker-compose up -d\n```\n\n## Monitoreo y Observabilidad\n- **Prometheus**: http://localhost:9090\n- **Grafana**: http://localhost:3000 (usuario: admin, contraseña: admin)\n- **Endpoint Prometheus de Spring Actuator**: `/actuator/prometheus` en cada microservicio\n- **Configuración de Prometheus**: Ver `prometheus.yml` para los targets de scraping\n\n## Logs centralizados y observabilidad\nAhora el sistema cuenta con:\n- **Loki**: almacena y centraliza los logs de todos los microservicios.\n- **Promtail**: recolecta los logs de los contenedores Docker y los envía a Loki.\n- **Grafana**: permite visualizar y consultar los logs almacenados en Loki, junto con las métricas de Prometheus.\n\n### ¿Cómo funciona?\n- Cada contenedor Docker genera logs en archivos locales.\n- Promtail lee estos archivos y los envía a Loki.\n- Loki almacena los logs y Grafana los visualiza, permitiendo búsquedas avanzadas y correlación con métricas.\n\n### Acceso rápido\n- **Loki**: http://localhost:3100 (API)\n- **Grafana**: http://localhost:3000 (sección \"Explore\" para logs)\n\n### Ejemplo de consulta en Grafana\nEntra a Grafana → Explore → selecciona la fuente Loki y consulta:\n```\n{job=\"docker\"}\n```\nEsto mostrará los logs de todos los contenedores Docker.\n\n## Endpoints API principales\nTodos los endpoints están disponibles a través del API Gateway en: `http://localhost:8090`\n\n```\n# Productos\nGET    /api/products          - Listar todos los productos\nPOST   /api/products          - Crear producto\nGET    /api/products/{id}     - Ver detalle de producto\nPUT    /api/products/{id}     - Actualizar producto\nDELETE /api/products/{id}     - Eliminar producto\n\n# Pagos\nGET    /api/payments          - Listar todos los pagos\nPOST   /api/payments          - Procesar nuevo pago\nGET    /api/payments/{id}     - Ver detalle de pago\nPUT    /api/payments/{id}     - Actualizar pago\nDELETE /api/payments/{id}     - Eliminar pago\n\n# Pedidos\nGET    /api/orders            - Listar todos los pedidos\nPOST   /api/orders            - Crear pedido\nGET    /api/orders/{id}       - Ver detalle de pedido\nPUT    /api/orders/{id}       - Actualizar pedido\nDELETE /api/orders/{id}       - Eliminar pedido\n\n# Inventario\nGET    /api/inventory         - Listar todos los productos en inventario\nPOST   /api/inventory         - Crear nuevo producto en inventario\nGET    /api/inventory/{id}    - Ver detalle de producto en inventario\nPUT    /api/inventory/{id}    - Actualizar producto en inventario\nDELETE /api/inventory/{id}    - Eliminar producto en inventario\n```\n\n## Servicios de infraestructura\n- **Eureka Server**: http://localhost:8761\n- **API Gateway**: http://localhost:8090\n- **Prometheus**: http://localhost:9090\n- **Grafana**: http://localhost:3000\n\n## Desafíos superados\n- Integración de programación reactiva con bases de datos relacionales\n- Configuración de redes entre contenedores Docker\n- Implementación de patrones de resiliencia\n- Configuración de múltiples réplicas de servicios mediante Docker Compose\n- Monitoreo y observabilidad centralizados\n\n## Recomendaciones para mejorar el proyecto\n- ~~Implementar un API Gateway (Spring Cloud Gateway)~~\n- ~~Agregar servicio de descubrimiento (Eureka)~~\n- ~~Exponer métricas con Spring Actuator~~\n- ~~Integrar Prometheus y Grafana para monitoreo~~\n- Implementar Circuit Breaker con Resilience4j\n- Añadir autenticación/autorización con OAuth2/JWT\n- ~~Implementar tests unitarios e integración~~\n- Incorporar documentación de API con Swagger/OpenAPI\n\n## Pendientes \n - Terminar integración correcta de circuit breaker con resilience4j\n - Agregar observabilidad con spring actuator\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forionwilx%2Fmicrocommerce-springboot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forionwilx%2Fmicrocommerce-springboot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forionwilx%2Fmicrocommerce-springboot/lists"}