{"id":51283698,"url":"https://github.com/ugursabirer/ecommerce-microservices","last_synced_at":"2026-06-30T03:32:27.952Z","repository":{"id":320859210,"uuid":"1068494509","full_name":"ugursabirer/ecommerce-microservices","owner":"ugursabirer","description":"Enterprise-grade microservices e-commerce platform | JWT Auth | API Gateway | Event-Driven | .NET 8.0 + Spring Boot 3.5.6 🚀","archived":false,"fork":false,"pushed_at":"2025-10-26T10:38:12.000Z","size":78,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-26T12:09:33.126Z","etag":null,"topics":["api-gateway","architecture","backend","distributed-systems","docker","dotnet","ecommerce","eureka","event-driven","jwt","kubernetes","microservices","postgresql","rabbitmq","redis","rest-api","saga-pattern","service-discovery","spring-boot","spring-cloud"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ugursabirer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-02T13:22:48.000Z","updated_at":"2025-10-26T10:38:15.000Z","dependencies_parsed_at":"2025-10-26T12:09:36.532Z","dependency_job_id":"eaa681ed-ca5b-40fa-ba7e-c0848ef91dbe","html_url":"https://github.com/ugursabirer/ecommerce-microservices","commit_stats":null,"previous_names":["ugursabirer/ecommerce-microservices"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/ugursabirer/ecommerce-microservices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ugursabirer%2Fecommerce-microservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ugursabirer%2Fecommerce-microservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ugursabirer%2Fecommerce-microservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ugursabirer%2Fecommerce-microservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ugursabirer","download_url":"https://codeload.github.com/ugursabirer/ecommerce-microservices/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ugursabirer%2Fecommerce-microservices/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34951598,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"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":["api-gateway","architecture","backend","distributed-systems","docker","dotnet","ecommerce","eureka","event-driven","jwt","kubernetes","microservices","postgresql","rabbitmq","redis","rest-api","saga-pattern","service-discovery","spring-boot","spring-cloud"],"created_at":"2026-06-30T03:32:27.272Z","updated_at":"2026-06-30T03:32:27.946Z","avatar_url":"https://github.com/ugursabirer.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# E-Commerce Microservices Platform\n\nA production-ready e-commerce platform built with modern microservices architecture. Scalable, resilient, and cloud-native enterprise-grade solution.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![.NET](https://img.shields.io/badge/.NET-8.0-512BD4)](https://dotnet.microsoft.com/)\n[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-3.5.6-6DB33F)](https://spring.io/projects/spring-boot)\n[![Docker](https://img.shields.io/badge/Docker-Ready-2496ED)](https://www.docker.com/)\n\n## 📋 Table of Contents\n\n- [Architecture Overview](#architecture-overview)\n- [Features](#features)\n- [Tech Stack](#tech-stack)\n- [Quick Start](#quick-start)\n- [API Documentation](#api-documentation)\n- [Service Details](#service-details)\n- [Testing](#testing)\n- [Project Progress](#project-progress)\n\n---\n\n## 🏗️ Architecture Overview\n\n```\n                                    ┌─────────────────┐\n                                    │   API Gateway   │\n                                    │  (Port: 8080)   │\n                                    └────────┬────────┘\n                                             │\n                     ┌───────────────────────┼───────────────────────┐\n                     │                       │                       │\n            ┌────────▼───────┐      ┌────────▼───────┐      ┌────────▼───────┐\n            │  User Service  │      │Product Service │      │ Order Service  │\n            │   (.NET 8.0)   │      │ (Spring Boot)  │      │ (Spring Boot)  │\n            │  Port: 5048    │      │  Port: 8081    │      │  Port: 8082    │\n            └────────┬───────┘      └────────┬───────┘      └────────┬───────┘\n                     │                       │                       │\n            ┌────────▼───────────────────────▼───────────────────────▼────────┐\n            │                  Service Discovery Layer                        │\n            │         Eureka Server (8761) + Consul (8500)                    │\n            └──────────────────┬──────────────────────────────────────────────┘\n                               │\n            ┌──────────────────▼───────────────────────┐\n            │          Data \u0026 Message Layer            │\n            │  PostgreSQL │ Redis │ RabbitMQ │ MinIO   │\n            └──────────────────────────────────────────┘\n```\n\n### Microservices\n\n| Service | Technology | Status | Port | Description |\n|---------|-----------|--------|------|-------------|\n| **User Service** | .NET Core 8.0 | ✅ Completed | 5048 | JWT authentication, user management, profile |\n| **Product Service** | Spring Boot 3.5.6 | ✅ Completed | 8081 | Product catalog, CRUD, category management |\n| **Order Service** | Spring Boot 3.5.6 | ✅ Completed | 8082 | Order management, order items, status tracking |\n| **Payment Service** | .NET Core 8.0 | 📋 Planned | 5049 | Payment processing, integration |\n| **Notification Service** | Node.js | 📋 Planned | 3001 | Email, SMS, push notifications |\n\n### Infrastructure Components\n\n| Component | Version | Port | Status | Purpose |\n|-----------|---------|------|--------|---------|\n| **API Gateway** | Spring Cloud Gateway | 8080 | ✅ Active | Routing, load balancing, rate limiting |\n| **Eureka Server** | Netflix Eureka | 8761 | ✅ Active | Service discovery and registry |\n| **Consul** | 1.15 | 8500 | ✅ Active | Service discovery for .NET services |\n| **PostgreSQL (User)** | 15 | 5435 | ✅ Active | User service database |\n| **PostgreSQL (Product)** | 15 | 5436 | ✅ Active | Product service database |\n| **PostgreSQL (Order)** | 15 | 5437 | ✅ Active | Order service database |\n| **Redis** | 7 | 6379 | ✅ Active | Caching, session management |\n| **RabbitMQ** | 3 | 5672, 15672 | ✅ Active | Event-driven communication |\n| **MinIO** | Latest | 9000, 9001 | ✅ Active | Object storage (S3-compatible) |\n| **Prometheus** | Latest | 9090 | 🔄 Planned | Metrics collection |\n| **Grafana** | Latest | 3000 | 🔄 Planned | Monitoring dashboards |\n| **Jaeger** | Latest | 16686 | 🔄 Planned | Distributed tracing |\n\n---\n\n## ✨ Features\n\n### Completed Features ✅\n\n- **Authentication \u0026 Authorization**\n  - JWT-based authentication\n  - Refresh token mechanism\n  - Role-based access control (RBAC)\n  - BCrypt password hashing\n\n- **Service Discovery**\n  - Automatic registration with Eureka Server for Spring services\n  - Consul integration for .NET services\n  - Health check mechanism\n\n- **API Gateway**\n  - Centralized routing management\n  - Load balancing\n  - Service discovery integration\n  - Health check endpoints\n\n- **Product Management**\n  - CRUD operations\n  - Category-based filtering\n  - Pagination and sorting\n  - PostgreSQL persistence\n\n- **Order Management**\n  - Order CRUD operations\n  - Order items management\n  - Order status tracking (PENDING, CONFIRMED, PROCESSING, SHIPPED, DELIVERED, CANCELLED)\n  - User-specific orders\n\n- **Containerization**\n  - All services Docker-ready\n  - Docker Compose orchestration\n  - Multi-stage build optimization\n  - Health checks for all services\n\n### In Development 🔄\n\n- Inter-service communication (OpenFeign)\n- Event-driven communication (RabbitMQ)\n- Distributed tracing (Jaeger)\n- Centralized logging (ELK Stack)\n\n### Roadmap 📋\n\n- Payment gateway integration\n- Notification service\n- Shopping cart service\n- Inventory management\n- API rate limiting\n- Circuit breaker pattern (Resilience4j)\n- Saga Pattern implementation\n- Kubernetes deployment\n- CI/CD pipeline (GitHub Actions)\n- Integration tests\n- Performance tests (JMeter/K6)\n\n---\n\n## 🛠️ Tech Stack\n\n### Backend Frameworks\n- **.NET Core 8.0** - User Service, modern C# features\n- **Spring Boot 3.5.6** - Product \u0026 Order Services\n- **Spring Cloud Gateway** - API Gateway\n- **Entity Framework Core** - ORM for .NET\n- **Spring Data JPA** - ORM for Spring\n\n### Security \u0026 Authentication\n- **JWT (JSON Web Tokens)** - Stateless authentication\n- **BCrypt** - Password hashing\n- **Spring Security** - Authorization framework\n- **Steeltoe** - .NET microservices toolkit\n\n### Databases \u0026 Storage\n- **PostgreSQL 15** - Primary database (per service pattern)\n- **Redis 7** - Caching layer\n- **MinIO** - Object storage (S3-compatible)\n\n### Message Broker \u0026 Events\n- **RabbitMQ 3** - Asynchronous messaging\n- Event-driven architecture pattern\n\n### Service Discovery \u0026 Registry\n- **Netflix Eureka** - Service registry for Spring services\n- **Consul** - Service mesh for .NET services\n\n### DevOps \u0026 Infrastructure\n- **Docker** - Containerization\n- **Docker Compose** - Multi-container orchestration\n- **Prometheus \u0026 Grafana** - Monitoring (planned)\n- **Jaeger** - Distributed tracing (planned)\n- **ELK Stack** - Centralized logging (planned)\n\n### Development Tools\n- **Swagger/OpenAPI** - API documentation\n- **Maven** - Build automation (Java)\n- **.NET CLI** - Build automation (.NET)\n\n---\n\n## 🚀 Quick Start\n\n### Prerequisites\n```\n✅ Docker Desktop 20.10+\n✅ .NET 8.0 SDK\n✅ Java 17+ (JDK)\n✅ Maven 3.8+\n✅ Git\n✅ 8GB+ RAM (for Docker)\n```\n\n### Installation\n\n**1. Clone the repository**\n\n```bash\ngit clone \u003crepository-url\u003e\ncd ecommerce-microservices\n```\n\n**2. Start Docker infrastructure**\n\n```bash\ndocker-compose up -d\n```\n\nServices will start in this order:\n- PostgreSQL (3 instances), Redis, RabbitMQ, MinIO, Consul\n- Eureka Server\n- User Service, Product Service, Order Service\n- API Gateway\n\n**3. Check service status**\n\n```bash\ndocker-compose ps\n```\n\nAll services should be in `healthy` state.\n\n**4. Service Discovery Dashboard**\n\nEureka: http://localhost:8761\n\nYou should see all services registered:\n- API-GATEWAY\n- USER-SERVICE\n- PRODUCT-SERVICE\n- ORDER-SERVICE\n\n### Local Development\n\n**User Service (.NET):**\n\n```bash\ncd services/user-service\ndotnet restore\ndotnet run\n```\n\nSwagger UI: http://localhost:5048/swagger\n\n**Product Service (Spring Boot):**\n\n```bash\ncd services/product-service\n./mvnw clean install\n./mvnw spring-boot:run\n```\n\nSwagger UI: http://localhost:8081/swagger-ui.html\n\n**Order Service (Spring Boot):**\n```bash\ncd services/order-service\n./mvnw clean install\n./mvnw spring-boot:run\n```\nAPI: http://localhost:8082/api/orders\n\n**API Gateway:**\n\n```bash\ncd infrastructure/api-gateway\n./mvnw spring-boot:run\n```\n\nHealth check: http://localhost:8080/actuator/health\n\n---\n\n## 📡 API Documentation\n\n### API Gateway - Main Entry Point\n\nAll requests are routed through API Gateway: `http://localhost:8080`\n\n### User Service Routes (`/api/auth/*`)\n\n#### Register - New User Registration\n```http\nPOST /api/auth/register\nContent-Type: application/json\n\n{\n  \"username\": \"johndoe\",\n  \"email\": \"john@example.com\",\n  \"password\": \"SecurePass123!\",\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\"\n}\n```\n\n**Response (201 Created):**\n```json\n{\n  \"id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n  \"username\": \"johndoe\",\n  \"email\": \"john@example.com\",\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"createdAt\": \"2025-10-26T12:00:00Z\"\n}\n```\n\n#### Login - User Authentication\n```http\nPOST /api/auth/login\nContent-Type: application/json\n\n{\n  \"email\": \"john@example.com\",\n  \"password\": \"SecurePass123!\"\n}\n```\n\n**Response (200 OK):**\n```json\n{\n  \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\",\n  \"refreshToken\": \"550e8400-e29b-41d4-a716-446655440000\",\n  \"expiresIn\": 3600,\n  \"user\": {\n    \"id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n    \"username\": \"johndoe\",\n    \"email\": \"john@example.com\"\n  }\n}\n```\n\n---\n\n### Product Service Routes (`/api/products/*`)\n\n#### Get All Products - List All Products\n```http\nGET /api/products?page=0\u0026size=10\u0026sort=name,asc\n```\n\n**Response (200 OK):**\n```json\n[\n  {\n    \"id\": 1,\n    \"name\": \"Laptop\",\n    \"description\": \"High-performance laptop\",\n    \"price\": 1299.99,\n    \"stockQuantity\": 50,\n    \"active\": true,\n    \"createdAt\": \"2025-10-26T12:00:00Z\",\n    \"updatedAt\": \"2025-10-26T12:00:00Z\"\n  }\n]\n```\n\n#### Get Product by ID\n```http\nGET /api/products/{id}\n```\n\n#### Create Product\n```http\nPOST /api/products\nContent-Type: application/json\n\n{\n  \"name\": \"Laptop\",\n  \"description\": \"High-performance laptop\",\n  \"price\": 1299.99,\n  \"stockQuantity\": 50\n}\n```\n\n#### Update Product\n```http\nPUT /api/products/{id}\nContent-Type: application/json\n\n{\n  \"name\": \"Updated Laptop\",\n  \"price\": 899.99,\n  \"stockQuantity\": 45\n}\n```\n\n#### Delete Product (Soft Delete)\n```http\nDELETE /api/products/{id}\n```\n\n#### Get Active Products\n```http\nGET /api/products/active\n```\n\n#### Search Products by Name\n```http\nGET /api/products/search?name=laptop\n```\n\n---\n\n### Order Service Routes (`/api/orders/*`)\n\n#### Get All Orders\n```http\nGET /api/orders\n```\n\n**Response (200 OK):**\n```json\n[\n  {\n    \"id\": 1,\n    \"userId\": 1,\n    \"totalAmount\": 300.00,\n    \"status\": \"PENDING\",\n    \"orderItems\": [\n      {\n        \"id\": 1,\n        \"productId\": 1,\n        \"quantity\": 2,\n        \"price\": 100.00,\n        \"subtotal\": 200.00\n      }\n    ],\n    \"createdAt\": \"2025-10-26T12:00:00Z\",\n    \"updatedAt\": \"2025-10-26T12:00:00Z\"\n  }\n]\n```\n\n#### Get Order by ID\n```http\nGET /api/orders/{id}\n```\n\n#### Get Orders by User ID\n```http\nGET /api/orders/user/{userId}\n```\n\n#### Get Orders by Status\n```http\nGET /api/orders/status/{status}\n```\nStatus values: `PENDING`, `CONFIRMED`, `PROCESSING`, `SHIPPED`, `DELIVERED`, `CANCELLED`\n\n#### Create Order\n```http\nPOST /api/orders\nContent-Type: application/json\n\n{\n  \"userId\": 1,\n  \"items\": [\n    {\n      \"productId\": 1,\n      \"quantity\": 2\n    },\n    {\n      \"productId\": 2,\n      \"quantity\": 1\n    }\n  ]\n}\n```\n\n**Response (201 Created):**\n```json\n{\n  \"id\": 2,\n  \"userId\": 1,\n  \"totalAmount\": 300.00,\n  \"status\": \"PENDING\",\n  \"orderItems\": [\n    {\n      \"id\": 3,\n      \"productId\": 1,\n      \"quantity\": 2,\n      \"price\": 100.00,\n      \"subtotal\": 200.00\n    }\n  ],\n  \"createdAt\": \"2025-10-26T12:00:00Z\"\n}\n```\n\n#### Update Order Status\n```http\nPUT /api/orders/{id}/status\nContent-Type: application/json\n\n{\n  \"status\": \"CONFIRMED\"\n}\n```\n\n#### Cancel Order\n```http\nDELETE /api/orders/{id}\n```\n\n---\n\n## 🧪 Testing\n\n### Health Check - All Services Status\n\n```bash\n# API Gateway\ncurl http://localhost:8080/actuator/health\n\n# User Service (via Gateway)\ncurl http://localhost:8080/api/auth/health\n\n# Product Service (direct)\ncurl http://localhost:8081/api/products\n\n# Order Service (direct)\ncurl http://localhost:8082/api/orders\n\n# Eureka Dashboard\ncurl http://localhost:8761\n```\n\n### Authentication Flow Test\n\n**1. User Registration:**\n```bash\ncurl -X POST http://localhost:8080/api/auth/register \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"username\": \"testuser\",\n    \"email\": \"test@example.com\",\n    \"password\": \"Test1234!\",\n    \"firstName\": \"Test\",\n    \"lastName\": \"User\"\n  }'\n```\n\n**2. Login:**\n```bash\ncurl -X POST http://localhost:8080/api/auth/login \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"email\": \"test@example.com\",\n    \"password\": \"Test1234!\"\n  }'\n```\n\nCopy the token and use it in subsequent requests.\n\n**3. Get Profile:**\n```bash\ncurl http://localhost:8080/api/auth/profile \\\n  -H \"Authorization: Bearer YOUR_TOKEN_HERE\"\n```\n\n### Product Service Test\n\n**1. Create Product:**\n```bash\ncurl -X POST http://localhost:8080/api/products \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"name\": \"Wireless Mouse\",\n    \"description\": \"Ergonomic wireless mouse\",\n    \"price\": 29.99,\n    \"stockQuantity\": 150\n  }'\n```\n\n**2. List Products:**\n```bash\ncurl http://localhost:8080/api/products\n```\n\n**3. Get Active Products:**\n```bash\ncurl http://localhost:8080/api/products/active\n```\n\n### Order Service Test\n\n**1. Create Order:**\n```bash\ncurl -X POST http://localhost:8080/api/orders \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"userId\": 1,\n    \"items\": [\n      {\n        \"productId\": 1,\n        \"quantity\": 3\n      }\n    ]\n  }'\n```\n\n**2. Get All Orders:**\n```bash\ncurl http://localhost:8080/api/orders\n```\n\n**3. Get Orders by User:**\n```bash\ncurl http://localhost:8080/api/orders/user/1\n```\n\n**4. Update Order Status:**\n```bash\ncurl -X PUT http://localhost:8080/api/orders/1/status \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"status\": \"CONFIRMED\"\n  }'\n```\n\n---\n\n## 🗂️ Service Details\n\n### Service Ports\n\n| Service/Component | Internal Port | External Port | Docker Network |\n|-----------------|---------------|---------------|----------------|\n| API Gateway | 8080 | 8080 | ecommerce-network |\n| User Service | 5048 | 5048 | ecommerce-network |\n| Product Service | 8081 | 8081 | ecommerce-network |\n| Order Service | 8082 | 8082 | ecommerce-network |\n| Eureka Server | 8761 | 8761 | ecommerce-network |\n| PostgreSQL (User) | 5432 | 5435 | ecommerce-network |\n| PostgreSQL (Product) | 5432 | 5436 | ecommerce-network |\n| PostgreSQL (Order) | 5432 | 5437 | ecommerce-network |\n| Redis | 6379 | 6379 | ecommerce-network |\n| RabbitMQ (AMQP) | 5672 | 5672 | ecommerce-network |\n| RabbitMQ (Management) | 15672 | 15672 | ecommerce-network |\n| Consul | 8500 | 8500 | ecommerce-network |\n| MinIO (API) | 9000 | 9000 | ecommerce-network |\n| MinIO (Console) | 9001 | 9001 | ecommerce-network |\n\n### Database Schema\n\nEach microservice uses its own PostgreSQL database:\n- `userdb` - User Service database (port 5435)\n- `productdb` - Product Service database (port 5436)\n- `orderdb` - Order Service database (port 5437)\n\n**Database Users:**\n- User Service: `useruser` / `userpass123`\n- Product Service: `productuser` / `productpass123`\n- Order Service: `orderuser` / `orderpass123`\n\n---\n\n## 📊 Project Progress\n\n### Current Progress: **80%**\n\n#### ✅ Completed (Phase 1, 2 \u0026 3)\n\n- [x] Docker infrastructure setup (PostgreSQL x3, Redis, RabbitMQ, Consul, MinIO)\n- [x] Eureka Server - Service Discovery\n- [x] API Gateway - Routing and load balancing\n- [x] User Service - Authentication \u0026 JWT\n- [x] User Service - Docker containerization\n- [x] User Service - Eureka integration (Steeltoe)\n- [x] Product Service - CRUD operations\n- [x] Product Service - Docker containerization\n- [x] Product Service - Eureka integration\n- [x] Order Service - Order management\n- [x] Order Service - Order items management\n- [x] Order Service - Status tracking\n- [x] Order Service - Docker containerization\n- [x] Order Service - Eureka integration\n- [x] Gateway → User Service routing\n- [x] Gateway → Product Service routing\n- [x] Gateway → Order Service routing\n- [x] Swagger documentation (for each service)\n- [x] Service-to-service communication foundation\n- [x] Health checks for all services\n\n#### 🔄 In Progress (Phase 4)\n\n- [ ] OpenFeign - Inter-service communication (Product prices in Order)\n- [ ] RabbitMQ event-driven communication\n- [ ] Order events (created, confirmed, cancelled)\n- [ ] Circuit breaker pattern (Resilience4j)\n\n#### 📋 Planned (Phase 5+)\n\n- [ ] Payment Service - Payment integration\n- [ ] Notification Service - Email/SMS/Push\n- [ ] Shopping Cart Service\n- [ ] Inventory Management\n- [ ] Saga Pattern implementation\n- [ ] Prometheus \u0026 Grafana monitoring\n- [ ] Jaeger distributed tracing\n- [ ] ELK Stack centralized logging\n- [ ] API rate limiting\n- [ ] Kubernetes deployment manifests\n- [ ] CI/CD pipeline (GitHub Actions)\n- [ ] Integration tests\n- [ ] Performance tests (JMeter/K6)\n\n### Sprint Planning\n\n**Current Sprint:** Sprint 4 (Inter-Service Communication \u0026 Event-Driven)  \n**Next Sprint:** Sprint 5 (Payment \u0026 Notification Services)\n\n---\n\n## 🐳 Docker Commands\n\n### Basic Operations\n\n```bash\n# Start all services\ndocker-compose up -d\n\n# Start specific service\ndocker-compose up -d order-service\n\n# Follow logs live\ndocker-compose logs -f\n\n# Follow specific service logs\ndocker-compose logs -f order-service\n\n# List running containers\ndocker-compose ps\n\n# Stop services\ndocker-compose stop\n\n# Stop and remove containers\ndocker-compose down\n\n# Stop, remove containers and volumes\ndocker-compose down -v\n\n# Rebuild images\ndocker-compose build\n\n# Build specific service\ndocker-compose build order-service\n\n# Build and start services\ndocker-compose up -d --build\n\n# Build without cache\ndocker-compose build --no-cache order-service\n```\n\n### Debugging\n\n```bash\n# Enter container with bash/sh\ndocker exec -it order-service sh\n\n# View container resource usage\ndocker stats\n\n# Detailed container information\ndocker inspect order-service\n\n# View network information\ndocker network ls\ndocker network inspect ecommerce-network\n\n# Check container logs (last 100 lines)\ndocker logs --tail 100 order-service\n```\n\n### Maintenance\n\n```bash\n# Clean unused images\ndocker image prune -a\n\n# Clean unused volumes\ndocker volume prune\n\n# Clean system (use carefully!)\ndocker system prune -a --volumes\n\n# Remove specific container\ndocker rm -f order-service\n\n# Remove specific image\ndocker rmi ecommerce-microservices-order-service\n```\n\n---\n\n## 🔧 Troubleshooting\n\n### Common Issues and Solutions\n\n**1. Port conflicts:**\n```bash\n# Check used ports (Windows)\nnetstat -ano | findstr :8080\n\n# Check used ports (Linux/Mac)\nlsof -i :8080\n\n# Alternative: Change Docker ports\n# Modify port mapping in docker-compose.yml\n```\n\n**2. Service discovery not working:**\n```bash\n# Check Eureka dashboard\nhttp://localhost:8761\n\n# Check if service registered with Eureka\ndocker logs eureka-server\ndocker logs order-service | grep -i eureka\n\n# Restart Eureka and dependent services\ndocker-compose restart eureka-server\ndocker-compose restart order-service\n```\n\n**3. Database connection error:**\n```bash\n# Check PostgreSQL is running\ndocker-compose ps | grep postgres\n\n# Check database logs\ndocker logs postgres-order\n\n# Connect to container and check database\ndocker exec -it postgres-order psql -U orderuser -d orderdb\n\n# List tables\n\\dt\n\n# Check connection from service\ndocker exec -it order-service sh\ncurl postgres-order:5432\n```\n\n**4. Order Service build fails:**\n```bash\n# Clean Maven cache\ncd services/order-service\n./mvnw clean\n\n# Rebuild without tests\n./mvnw clean package -DskipTests\n\n# Check for Java version\njava -version  # Should be 17+\n```\n\n**5. Out of memory:**\n```bash\n# Allocate more RAM to Docker\n# Docker Desktop → Settings → Resources → Memory (recommend 8GB+)\n\n# Check container memory usage\ndocker stats\n```\n\n**6. Gateway routing not working:**\n```bash\n# Check Gateway logs\ndocker logs api-gateway\n\n# Rebuild Gateway\ncd infrastructure/api-gateway\n./mvnw clean package -DskipTests\n\n# Restart Gateway\ndocker-compose restart api-gateway\n```\n\n---\n\n## 📚 Additional Resources\n\n### Documentation\n\n- [Swagger - User Service](http://localhost:5048/swagger)\n- [Swagger - Product Service](http://localhost:8081/swagger-ui.html)\n- [Eureka Dashboard](http://localhost:8761)\n- [RabbitMQ Management](http://localhost:15672) (guest/guest)\n- [MinIO Console](http://localhost:9001) (minioadmin/minioadmin)\n- [Consul UI](http://localhost:8500)\n\n### Repository Structure\n\n```\necommerce-microservices/\n├── infrastructure/\n│   ├── api-gateway/          # Spring Cloud Gateway\n│   ├── eureka-server/        # Service Discovery\n│   └── docker-compose.yml    # Orchestration\n├── services/\n│   ├── user-service/         # .NET Core 8.0\n│   ├── product-service/      # Spring Boot\n│   └── order-service/        # Spring Boot\n├── docs/                     # Additional documentation\n├── scripts/                  # Utility scripts\n├── .gitignore\n├── README.md\n└── LICENSE\n```\n\n---\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit changes (`git commit -m 'feat: add amazing feature'`)\n4. Push to branch (`git push origin feature/AmazingFeature`)\n5. Open Pull Request\n\n---\n\n## 📄 License\n\nThis project is licensed under the MIT License. See [LICENSE](LICENSE) file for details.\n\n---\n\n## 📞 Contact\n\nProject Link: [https://github.com/username/ecommerce-microservices](https://github.com/username/ecommerce-microservices)\n\n---\n\n## 🏆 Acknowledgments\n\nThis project was developed to learn and implement modern microservices architecture using:\n\n- Spring Cloud ecosystem\n- .NET Core microservice best practices\n- Docker containerization\n- Service mesh patterns\n- Event-driven architecture\n\n---\n\n**Last Updated:** October 26, 2025  \n**Version:** 0.8.0-alpha  \n**Status:** Active Development 🚀\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fugursabirer%2Fecommerce-microservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fugursabirer%2Fecommerce-microservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fugursabirer%2Fecommerce-microservices/lists"}