How mehmetozkaya/eshopmodularmonoliths works
This is a .NET modular-monolith e-shop. The main user journey is adding catalog products to a basket, checking out, and creating an order from the checkout event. Catalog also supports product management and browsing; Basket includes cached storage and price updates; Ordering exposes order management. The README documents Identity, PostgreSQL, Redis, RabbitMQ, and outbox capabilities, but Identity is not present in the supplied tree. Relationships are limited to those shown in excerpts, the source index, or README; unsampled messaging and persistence wiring is not inferred.
Main entry points: Features Product features · Program.cs API host · AddItemIntoBasketHandler.cs Add basket item · CheckoutBasketHandler.cs Basket checkout
Components 24
API and shared
- API host
src/Bootstrapper/Api/Program.cs - CQRS contracts
src/Shared/Shared.Contracts/CQRS/ICommand.cs
Product catalog
- Product features
src/Modules/Catalog/Catalog/Products/Features - Product aggregate
src/Modules/Catalog/Catalog/Products/Models/Product.cs - Catalog database
src/Modules/Catalog/Catalog/Data/CatalogDbContext.cs - Product contract
src/Modules/Catalog/Catalog.Contracts/Products/Dtos/ProductDto.cs
Basket and checkout
- Basket features
src/Modules/Basket/Basket/Basket/Features - Add basket item
src/Modules/Basket/Basket/Basket/Features/AddItemIntoBasket/AddItemIntoBasketHandler.cs - Shopping cart
src/Modules/Basket/Basket/Basket/Models/ShoppingCart.cs - Basket repository
src/Modules/Basket/Basket/Data/Repository/IBasketRepository.cs - Cached repository
src/Modules/Basket/Basket/Data/Repository/CachedBasketRepository.cs - Basket database
src/Modules/Basket/Basket/Data/BasketDbContext.cs - Basket checkout
src/Modules/Basket/Basket/Basket/Features/CheckoutBasket/CheckoutBasketHandler.cs - Outbox processor
src/Modules/Basket/Basket/Data/Processors/OutboxProcessor.cs - Price update handler
src/Modules/Basket/Basket/Basket/EventHandlers/ProductPriceChangedIntegrationEventHandler.cs
Order management
- Checkout consumer
src/Modules/Ordering/Ordering/Orders/EventHandlers/BasketCheckoutIntegrationEventHandler.cs - Create order
src/Modules/Ordering/Ordering/Orders/Features/CreateOrder/CreateOrderHandler.cs - Order aggregate
src/Modules/Ordering/Ordering/Orders/Models/Order.cs - Ordering database
src/Modules/Ordering/Ordering/Data/OrderingDbContext.cs - Order features
src/Modules/Ordering/Ordering/Orders/Features
Messaging and persistence
- Checkout event
src/Shared/Shared.Messaging/Events/BasketCheckoutIntegrationEvent.cs - Price change event
src/Shared/Shared.Messaging/Events/ProductPriceChangedIntegrationEvent.cs - RabbitMQ broker
Other components
- API user
Connections 22
- API user → API host: sends requests
README.md - API host → Product features: registers module
src/Bootstrapper/Api/Program.cs - API host → Basket features: registers module
src/Bootstrapper/Api/Program.cs - API host → Order features: registers module
src/Bootstrapper/Api/Program.cs - Add basket item → Basket repository: loads and saves
src/Modules/Basket/Basket/Basket/Features/AddItemIntoBasket/AddItemIntoBasketHandler.cs - Add basket item → Product features: queries product
src/Modules/Basket/Basket/Basket/Features/AddItemIntoBasket/AddItemIntoBasketHandler.cs - Add basket item → Shopping cart: adds item
src/Modules/Basket/Basket/Basket/Features/AddItemIntoBasket/AddItemIntoBasketHandler.cs - Cached repository → Basket repository: decorates
src/Modules/Basket/Basket/Data/Repository/CachedBasketRepository.cs - Basket checkout → Basket database: reads and writes
src/Modules/Basket/Basket/Basket/Features/CheckoutBasket/CheckoutBasketHandler.cs - Basket checkout → Checkout event: creates message
src/Modules/Basket/Basket/Basket/Features/CheckoutBasket/CheckoutBasketHandler.cs - Basket checkout → Outbox processor: records message
src/Modules/Basket/Basket/Basket/Features/CheckoutBasket/CheckoutBasketHandler.cs - Outbox processor → RabbitMQ broker: publishes messages
- RabbitMQ broker → Checkout consumer: delivers event
README.md - Checkout consumer → Create order: dispatches command
src/Modules/Ordering/Ordering/Orders/EventHandlers/BasketCheckoutIntegrationEventHandler.cs - Create order → Ordering database: saves order
src/Modules/Ordering/Ordering/Orders/Features/CreateOrder/CreateOrderHandler.cs - Create order → Order aggregate: creates aggregate
src/Modules/Ordering/Ordering/Orders/Features/CreateOrder/CreateOrderHandler.cs - Product features → Catalog database: queries and updates
src/Modules/Catalog/Catalog/Products/Features/GetProducts/GetProductsHandler.cs - Product features → Product aggregate: creates and updates
src/Modules/Catalog/Catalog/Products/Features/CreateProduct/CreateProductHandler.cs - Price change event → Price update handler: updates basket prices
README.md - Price update handler → Basket database: updates prices
- Product features → Price change event: publishes price change
README.md - CQRS contracts → Add basket item: defines command pattern
src/Modules/Basket/Basket/Basket/Features/AddItemIntoBasket/AddItemIntoBasketHandler.cs