{"id":22396006,"url":"https://github.com/mo7ammedd/hungerstation_microservices","last_synced_at":"2025-09-10T19:39:16.984Z","repository":{"id":264833138,"uuid":"894379282","full_name":"Mo7ammedd/HungerStation_Microservices","owner":"Mo7ammedd","description":"Microservices architecture with .NET Core (.NET 8) and Identity Server Integration with Azure Service Bus","archived":false,"fork":false,"pushed_at":"2025-07-04T20:41:44.000Z","size":1122,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-04T21:33:09.285Z","etag":null,"topics":["aspnetcore","azure","dotnet","identity","microservice","payment-gateway","service-bus","stripe"],"latest_commit_sha":null,"homepage":"","language":"C#","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/Mo7ammedd.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}},"created_at":"2024-11-26T08:56:56.000Z","updated_at":"2025-07-04T20:41:48.000Z","dependencies_parsed_at":"2024-12-18T16:31:56.894Z","dependency_job_id":"f28b0cdd-089e-4a5a-8a1d-85a50abd3c69","html_url":"https://github.com/Mo7ammedd/HungerStation_Microservices","commit_stats":null,"previous_names":["mo7ammedd/mango_microservices","mo7ammedd/hungerstation_microservices"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Mo7ammedd/HungerStation_Microservices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mo7ammedd%2FHungerStation_Microservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mo7ammedd%2FHungerStation_Microservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mo7ammedd%2FHungerStation_Microservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mo7ammedd%2FHungerStation_Microservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mo7ammedd","download_url":"https://codeload.github.com/Mo7ammedd/HungerStation_Microservices/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mo7ammedd%2FHungerStation_Microservices/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268039843,"owners_count":24185807,"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-07-31T02:00:08.723Z","response_time":66,"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":["aspnetcore","azure","dotnet","identity","microservice","payment-gateway","service-bus","stripe"],"created_at":"2024-12-05T06:06:36.602Z","updated_at":"2025-07-31T12:30:49.644Z","avatar_url":"https://github.com/Mo7ammedd.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HungerStation Microservices Platform\n\n## Technical Architecture Overview\n\nHungerStation is a comprehensive food delivery microservices platform built with **.NET 8**, implementing modern microservices patterns with event-driven architecture, API Gateway, and cloud-native deployment strategies.\n\n## Architecture Patterns \u0026 Design Principles\n\n### Microservices Architecture\n\n* **Domain-Driven Design (DDD)**: Each service represents a bounded context\n* **Database per Service**: Independent data stores for each microservice\n* **API Gateway Pattern**: Centralized entry point for client communications\n* **Event-Driven Architecture**: Asynchronous communication via Azure Service Bus\n* **CQRS (Command Query Responsibility Segregation)**: Separation of read/write operations\n* **Circuit Breaker Pattern**: Fault tolerance and resilience\n\n### Core Design Principles\n\n* **Single Responsibility Principle**: Each service has one business responsibility\n* **Loose Coupling**: Services communicate through well-defined APIs\n* **High Cohesion**: Related functionality grouped within services\n* **Autonomous Services**: Independent deployment and scaling\n* **Fault Isolation**: Failures contained within service boundaries\n\n## Microservices Catalog\n\n### 1. Authentication Service (AuthAPI)\n\n**Port**: 7001\n**Technology Stack**: ASP.NET Core 8, Entity Framework Core, JWT, Identity Framework\n\n```\n├── Controllers/AuthController.cs\n├── Models/ApplicationUser.cs\n├── Services/JwtTokenGenerator.cs\n└── Data/AppDbContext.cs\n```\n\n**Key Features**:\n\n* JWT Token generation and validation\n* Role-based authorization (Admin, Customer)\n* User registration and authentication\n* Password hashing with Identity Framework\n* Token refresh mechanism\n\n**API Endpoints**:\n\n```\nPOST /api/auth/register     - User Registration  \nPOST /api/auth/login        - User Authentication  \nPOST /api/auth/assign-role  - Role Assignment  \n```\n\n### 2. Product Catalog Service (ProductAPI)\n\n**Port**: 7002\n**Technology Stack**: ASP.NET Core 8, Entity Framework Core, AutoMapper\n\n```\n├── Controllers/ProductController.cs\n├── Models/Product.cs\n├── Data/AppDbContext.cs\n└── Helpers/MappingProfiles.cs\n```\n\n**Key Features**:\n\n* Product CRUD operations\n* Category management\n* Image handling and storage\n* Search and filtering capabilities\n* Stock management\n\n**API Endpoints**:\n\n```\nGET    /api/product           - List all products  \nGET    /api/product/{id}      - Get product by ID  \nPOST   /api/product           - Create product (Admin)  \nPUT    /api/product           - Update product (Admin)  \nDELETE /api/product/{id}      - Delete product (Admin)  \n```\n\n### 3. Coupon Management Service (CouponAPI)\n\n**Port**: 7003\n**Technology Stack**: ASP.NET Core 8, Entity Framework Core, AutoMapper\n\n```\n├── Controllers/CouponController.cs\n├── Models/Coupon.cs\n├── Data/AppDbContext.cs\n└── Helpers/MappingProfiles.cs\n```\n\n**Key Features**:\n\n* Discount coupon creation and management\n* Coupon validation and expiry handling\n* Usage tracking and limits\n* Percentage and fixed amount discounts\n\n**API Endpoints**:\n\n```\nGET    /api/coupon                 - List all coupons  \nGET    /api/coupon/{id}            - Get coupon by ID  \nGET    /api/coupon/GetByCode/{code} - Get coupon by code  \nPOST   /api/coupon                 - Create coupon (Admin)  \nPUT    /api/coupon                 - Update coupon (Admin)  \nDELETE /api/coupon/{id}            - Delete coupon (Admin)  \n```\n\n### 4. Shopping Cart Service (ShoppingCartAPI)\n\n**Port**: 7004\n**Technology Stack**: ASP.NET Core 8, Entity Framework Core, Azure Service Bus\n\n```\n├── Controllers/CartAPIController.cs\n├── Models/CartHeader.cs\n├── Models/CartDetails.cs\n├── Service/ProductService.cs\n└── Service/CouponService.cs\n```\n\n**Key Features**:\n\n* Cart item management (Add, Update, Remove)\n* Coupon application and validation\n* Real-time price calculation\n* Cart persistence for logged-in users\n* Integration with Product and Coupon services\n\n**API Endpoints**:\n\n```\nGET    /api/cart/GetCart/{userId}  - Get user cart  \nPOST   /api/cart/CartUpsert        - Add/Update cart item  \nPOST   /api/cart/RemoveCart        - Remove cart item  \nPOST   /api/cart/ApplyCoupon       - Apply coupon to cart  \nPOST   /api/cart/EmailCartRequest  - Send cart via email  \n```\n\n### 5. Order Management Service (OrderAPI)\n\n**Port**: 7005\n**Technology Stack**: ASP.NET Core 8, Entity Framework Core, Stripe, Azure Service Bus\n\n```\n├── Controllers/OrderController.cs\n├── Models/OrderHeader.cs\n├── Models/OrderDetails.cs\n├── Service/ProductService.cs\n└── Utility/SD.cs\n```\n\n**Key Features**:\n\n* Order creation and lifecycle management\n* Stripe payment integration\n* Order status tracking (Pending → Approved → ReadyForPickup → Completed)\n* Payment validation and refund processing\n* Reward points calculation via Service Bus\n\n**API Endpoints**:\n\n```\nGET    /api/order/GetOrders        - List orders (filtered by user/admin)  \nGET    /api/order/GetOrder/{id}    - Get order details  \nPOST   /api/order/CreateOrder      - Create new order  \nPOST   /api/order/CreateStripeSession - Create Stripe payment session  \nPOST   /api/order/ValidateStripeSession - Validate payment  \nPOST   /api/order/UpdateOrderStatus/{id} - Update order status  \n```\n\n**Order State Machine**:\n\n```\nPending → Approved → ReadyForPickup → Completed  \n    ↓  \nCancelled/Refunded  \n```\n\n### 6. Email Notification Service (EmailAPI)\n\n**Port**: 7006\n**Technology Stack**: ASP.NET Core 8, Azure Service Bus, Entity Framework Core\n\n```\n├── Messaging/AzureServiceBusConsumer.cs\n├── Services/EmailService.cs\n├── Models/EmailLogger.cs\n└── Extensions/ApplicationBuilderExtensions.cs\n```\n\n**Key Features**:\n\n* Asynchronous email processing via Service Bus\n* Email template management\n* Delivery status tracking\n* Cart abandonment notifications\n* Order confirmation emails\n\n**Service Bus Integration**:\n\n```\nQueue: EmailShoppingCartQueue  \nTopic: OrderCreatedTopic  \n```\n\n### 7. Rewards \u0026 Loyalty Service (RewardAPI)\n\n**Port**: 7007\n**Technology Stack**: ASP.NET Core 8, Azure Service Bus, Entity Framework Core\n\n```\n├── Messaging/AzureServiceBusConsumer.cs\n├── Services/RewardService.cs\n├── Models/Rewards.cs\n└── Extensions/ApplicationBuilderExtensions.cs\n```\n\n**Key Features**:\n\n* Points-based loyalty system\n* Order completion reward calculation\n* User reward history tracking\n* Event-driven reward processing\n\n**Service Bus Integration**:\n\n```\nTopic: OrderCreatedTopic  \nSubscription: OrderCreated_Rewards_Subscription  \n```\n\n### 8. Web Frontend (MVC Application)\n\n**Port**: 7000\n**Technology Stack**: ASP.NET Core MVC 8, Bootstrap, jQuery\n\n```\n├── Controllers/HomeController.cs\n├── Controllers/CartController.cs\n├── Controllers/OrderController.cs\n├── Service/BaseService.cs\n└── Views/\n```\n\n**Key Features**:\n\n* Responsive web interface\n* JWT-based authentication\n* Shopping cart management\n* Order tracking dashboard\n* Admin panel for product/coupon management\n\n## Inter-Service Communication\n\n### Synchronous Communication\n\n* **HTTP/HTTPS REST APIs**: Direct service-to-service calls\n* **Service Discovery**: Configuration-based endpoint resolution\n* **Circuit Breaker**: Fault tolerance for external calls\n\n### Asynchronous Communication\n\n* **Azure Service Bus**: Message queuing and pub/sub patterns\n* **Event-Driven Architecture**: Domain events for business processes\n* **Message Patterns**: Command, Event, and Query messages\n\n### Communication Flow\n\n```\nWeb App → API Gateway → Microservices  \n    ↓  \nService Bus → Background Services  \n    ↓  \nDatabase Updates → Event Publishing  \n```\n\n## Security Architecture\n\n### Authentication \u0026 Authorization\n\n* **JWT (JSON Web Tokens)**: Stateless authentication\n* **Role-Based Access Control (RBAC)**: Admin and Customer roles\n* **Bearer Token Authentication**: API endpoint protection\n* **Refresh Token Mechanism**: Session management\n\n### Security Patterns\n\n```csharp\n[Authorize(Roles = \"ADMIN\")]\npublic class ProductController : ControllerBase\n{\n    // Admin-only endpoints\n}\n```\n\n### Security Headers\n\n* HTTPS enforcement\n* CORS configuration\n* Input validation and sanitization\n* SQL injection prevention via Entity Framework\n\n## Data Architecture\n\n### Database Design\n\n* **Database per Service**: Independent data stores\n* **Entity Framework Core**: ORM with Code-First approach\n* **SQL Server**: Primary database engine\n* **Connection String Management**: Configuration-based\n\n### Data Consistency\n\n* **Eventual Consistency**: Across service boundaries\n* **Transactional Consistency**: Within service boundaries\n* **Saga Pattern**: Distributed transaction management\n* **Event Sourcing**: Audit trail for critical operations\n\n### Database Schema Examples\n\n```sql\n-- Order Service Tables  \nOrderHeaders (OrderHeaderId, UserId, OrderTotal, Status, PaymentIntentId)  \nOrderDetails (OrderDetailsId, OrderHeaderId, ProductId, Price, Count)  \n\n-- Reward Service Tables  \nRewards (Id, UserId, OrderId, RewardsActivity, RewardsDate)  \n```\n\n## Event-Driven Architecture\n\n### Azure Service Bus Configuration\n\n```json\n{\n  \"TopicAndQueueNames\": {\n    \"EmailShoppingCartQueue\": \"emailshoppingcart\",\n    \"OrderCreatedTopic\": \"ordercreated\",\n    \"OrderCreated_Rewards_Subscription\": \"ordercreated_rewards\"\n  }\n}\n```\n\n### Event Flow Patterns\n\n1. **Cart Email Request**: Cart → Service Bus Queue → Email Service\n2. **Order Completion**: Order → Service Bus Topic → Rewards Service\n3. **Payment Validation**: Stripe Webhook → Order Update → Reward Points\n\n### Message Handling\n\n```csharp\npublic async Task OnEmailCartRequestReceived(ProcessMessageEventArgs arg)\n{\n    var cartDto = JsonConvert.DeserializeObject\u003cCartDto\u003e(messageBody);\n    await _emailService.EmailCartAndLogAsync(cartDto);\n    await arg.CompleteMessageAsync(arg.Message);\n}\n```\n\n## Development \u0026 Deployment\n\n### Project Structure\n\n```\nHungerStation_Microservices/  \n├── HungerStation.Services.AuthAPI/  \n├── HungerStation.Services.ProductAPI/  \n├── HungerStation.Services.CouponAPI/  \n├── HungerStation.Services.ShoppingCartAPI/  \n├── HungerStation.Services.OrderAPI/  \n├── HungerStation.Services.EmailAPI/  \n├── HungerStation.Services.RewardAPI/  \n├── HungerStation.MessageBus/  \n├── HungerStation.Web/  \n└── HungerStation.sln  \n```\n\n### Technology Stack Summary\n\n| Component          | Technology            | Version |\n| ------------------ | --------------------- | ------- |\n| Runtime            | .NET                  | 8.0     |\n| Web Framework      | ASP.NET Core          | 8.0     |\n| ORM                | Entity Framework Core | 8.0     |\n| Database           | SQL Server            | Latest  |\n| Messaging          | Azure Service Bus     | 7.17+   |\n| Authentication     | JWT Bearer            | 8.0     |\n| Payment            | Stripe.NET            | 44.13+  |\n| Object Mapping     | AutoMapper            | 12.0+   |\n| JSON Serialization | Newtonsoft.Json       | 13.0+   |\n\n### Build and Run\n\n```bash\n# Build entire solution  \ndotnet build HungerStation.sln  \n\n# Run specific service  \ndotnet run --project HungerStation.Services.OrderAPI  \n\n# Run all services (requires multiple terminals)  \ndotnet run --project HungerStation.Services.AuthAPI  \ndotnet run --project HungerStation.Services.ProductAPI  \ndotnet run --project HungerStation.Services.CouponAPI  \ndotnet run --project HungerStation.Services.ShoppingCartAPI  \ndotnet run --project HungerStation.Services.OrderAPI  \ndotnet run --project HungerStation.Services.EmailAPI  \ndotnet run --project HungerStation.Services.RewardAPI  \ndotnet run --project HungerStation.Web  \n```\n\n### Service Ports Configuration\n\n```json\n{\n  \"ServiceUrls\": {\n    \"AuthAPI\": \"https://localhost:7001\",\n    \"ProductAPI\": \"https://localhost:7002\", \n    \"CouponAPI\": \"https://localhost:7003\",\n    \"ShoppingCartAPI\": \"https://localhost:7004\",\n    \"OrderAPI\": \"https://localhost:7005\",\n    \"EmailAPI\": \"https://localhost:7006\",\n    \"RewardAPI\": \"https://localhost:7007\"\n  }\n}\n```\n\n## Testing Strategy\n\n### Unit Testing\n\n* **xUnit**: Primary testing framework\n* **Moq**: Mocking framework for dependencies\n* **FluentAssertions**: Readable test assertions\n\n### Integration Testing\n\n* **TestServer**: In-memory server for API testing\n* **Test Databases**: Isolated test environments\n* **Service Bus Emulation**: Local testing capabilities\n\n### API Testing\n\n* **Swagger/OpenAPI**: Interactive API documentation\n* **Postman Collections**: Automated API testing\n* **Health Checks**: Service monitoring endpoints\n\n## Monitoring \u0026 Observability\n\n### Logging\n\n* **Serilog**: Structured logging framework\n* **Application Insights**: Cloud-based monitoring\n* **Correlation IDs**: Request tracing across services\n\n### Health Checks\n\n```csharp\nbuilder.Services.AddHealthChecks()\n    .AddDbContext\u003cAppDbContext\u003e()\n    .AddAzureServiceBusTopic(connectionString, topicName);\n```\n\n### Metrics \u0026 Performance\n\n* **Response Time Monitoring**: API performance tracking\n* **Error Rate Tracking**: Failure analysis\n* **Resource Utilization**: CPU, Memory, Database connections\n\n## Future Enhancements\n\n### Planned Features\n\n1. **API Gateway**: Ocelot or Azure API Management\n2. **Service Discovery**: Consul or Azure Service Discovery\n3. **Configuration Management**: Azure Key Vault integration\n4. **Caching Layer**: Redis for improved performance\n5. **Message Encryption**: End-to-end message security\n6. **Event Store**: Complete audit trail implementation\n7. **GraphQL Gateway**: Unified data querying interface\n8. **Container Orchestration**: Kubernetes deployment\n9. **CI/CD Pipeline**: Azure DevOps or GitHub Actions\n10. **Load Balancing**: Multi-instance deployment support\n\n### Scalability Considerations\n\n* **Horizontal Scaling**: Multi-instance deployment\n* **Database Sharding**: Data distribution strategies\n* **CDN Integration**: Static content delivery\n* **Auto-scaling**: Resource-based scaling policies\n\n## Development Guidelines\n\n### Code Quality Standards\n\n* **Clean Architecture**: Separation of concerns\n* **SOLID Principles**: Object-oriented design\n* **Code Reviews**: Peer review process\n* **Static Analysis**: SonarQube integration\n* **Documentation**: Comprehensive API documentation\n\n### Git Workflow\n\n```bash\n# Feature branch workflow  \ngit checkout -b feature/order-management  \ngit commit -m \"feat: implement order creation endpoint\"  \ngit push origin feature/order-management  \n```\n\n### Commit Message Convention\n\n```\nfeat: add new order management service  \nfix: resolve payment validation issue  \ndocs: update API documentation  \ntest: add unit tests for reward calculation  \nrefactor: optimize database queries  \n```\n\n---\n\n## Performance Benchmarks\n\n| Metric             | Target  | Current |\n| ------------------ | ------- | ------- |\n| API Response Time  | \u003c 200ms | \\~150ms |\n| Order Processing   | \u003c 5s    | \\~3s    |\n| Cart Operations    | \u003c 100ms | \\~80ms  |\n| Email Delivery     | \u003c 30s   | \\~25s   |\n| Payment Processing | \u003c 10s   | \\~7s    |\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests for new functionality\n5. Ensure all tests pass\n6. Submit a pull request\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n**HungerStation Microservices Platform** - Built with .NET 8 and modern cloud-native patterns.\n\n---\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmo7ammedd%2Fhungerstation_microservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmo7ammedd%2Fhungerstation_microservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmo7ammedd%2Fhungerstation_microservices/lists"}