# hsynkbulut/omnistore architecture

> Architecture diagram of the GitHub repository hsynkbulut/omnistore, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/hsynkbulut/omnistore
- Repository: https://github.com/hsynkbulut/omnistore

## Overview

OmniStore is a microservices e-commerce platform with an ASP.NET MVC storefront, central identity, and services for catalog, basket, orders, discounts, comments, cargo, images, and messaging. A typical customer journey is browsing products, managing a basket, placing an order, and paying; the README documents these capabilities but does not establish the precise runtime call chain. Sampled sources confirm several service-internal actions, including order query handlers using repositories and comment creation writing, publishing, and optionally emailing. Other cross-service links below are documented or marked unverified.

Main entry points: [`ApiGateway/MultiShop.OcelotGateway/Program.cs`](https://github.com/hsynkbulut/omnistore/blob/master/ApiGateway/MultiShop.OcelotGateway/Program.cs) (API Gateway), [`Frontends/MultiShop.WebUI/Controllers/ShoppingCartController.cs`](https://github.com/hsynkbulut/omnistore/blob/master/Frontends/MultiShop.WebUI/Controllers/ShoppingCartController.cs) (Shopping Cart), [`Services/Comment/MultiShop.Comment/Controllers/UserCommentsController.cs`](https://github.com/hsynkbulut/omnistore/blob/master/Services/Comment/MultiShop.Comment/Controllers/UserCommentsController.cs) (Comment Service), [`Frontends/MultiShop.WebUI/Program.cs`](https://github.com/hsynkbulut/omnistore/blob/master/Frontends/MultiShop.WebUI/Program.cs) (Web UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Storefront"]
  node_webui["Web UI<br/>[Program.cs]"]
  node_shopping["Shopping Cart"]
  node_admin["Admin Catalog"]
end

subgraph group_identity["Identity"]
  node_identityserver["Identity Server"]
  node_consent["Consent Flow"]
end

subgraph group_commerce["Commerce Services"]
  node_catalog["Product Catalog"]
  node_basket["Basket Service"]
  node_orders["Order API"]
  node_orderhandlers["Order Queries"]
  node_orderrepo["Order Repository<br/>[IRepository.cs]"]
  node_discount["Discount Service"]
  node_payment["Payment Service<br/>[Program.cs]"]
  node_cargo["Cargo Service"]
end

subgraph group_engagement["Engagement Services"]
  node_comments["Comment Service"]
  node_commentstore[("Comment Store<br/>[CommentContext.cs]")]
  node_commentqueue["Message Publisher"]
  node_email["Email Service<br/>[IEmailService.cs]"]
  node_images["Image Management"]
  node_cloudstorage["Cloud Storage"]
  node_messages["Messaging Service"]
end

subgraph group_platform["Platform"]
  node_gateway["API Gateway<br/>[Program.cs]"]
end

node_customer(("Customer"))

node_customer -->|"uses"| node_webui
node_webui -.->|"hosts shopping"| node_shopping
node_webui -.->|"calls APIs"| node_gateway
node_gateway -->|"routes requests"| node_catalog
node_gateway -->|"routes requests"| node_basket
node_gateway -->|"routes requests"| node_orders
node_gateway -->|"routes requests"| node_discount
node_gateway -->|"routes requests"| node_identityserver
node_shopping -.->|"uses basket"| node_basket
node_shopping -.->|"submits order"| node_orders
node_shopping -.->|"starts payment"| node_payment
node_admin -->|"manages products"| node_catalog
node_orderhandlers -->|"queries by ID"| node_orderrepo
node_comments -->|"reads and writes"| node_commentstore
node_comments -->|"publishes comment"| node_commentqueue
node_comments -->|"sends email"| node_email
node_images -->|"uses storage"| node_cloudstorage

click node_webui "https://github.com/hsynkbulut/omnistore/blob/master/Frontends/MultiShop.WebUI/Program.cs"
click node_shopping "https://github.com/hsynkbulut/omnistore/blob/master/Frontends/MultiShop.WebUI/Controllers/ShoppingCartController.cs"
click node_admin "https://github.com/hsynkbulut/omnistore/blob/master/Frontends/MultiShop.WebUI/Areas/Admin/Controllers/ProductController.cs"
click node_gateway "https://github.com/hsynkbulut/omnistore/blob/master/ApiGateway/MultiShop.OcelotGateway/Program.cs"
click node_identityserver "https://github.com/hsynkbulut/omnistore/blob/master/IdentityServer/MultiShop.IdentityServer/Quickstart/Account/AccountController.cs"
click node_consent "https://github.com/hsynkbulut/omnistore/blob/master/IdentityServer/MultiShop.IdentityServer/Quickstart/Consent/ConsentController.cs"
click node_catalog "https://github.com/hsynkbulut/omnistore/blob/master/Services/Catalog/MultiShop.Catalog/Controllers/ProductsController.cs"
click node_basket "https://github.com/hsynkbulut/omnistore/blob/master/Services/Basket/MultiShop.Basket/Controllers/BasketsController.cs"
click node_orders "https://github.com/hsynkbulut/omnistore/blob/master/Services/Order/Presentation/MultiShop.Order.WebApi/Controllers/OrderDetailsController.cs"
click node_orderhandlers "https://github.com/hsynkbulut/omnistore/blob/master/Services/Order/Core/MultiShop.Order.Application/Features/CQRS/Handlers/AddressHandlers/GetAddressByIdQueryHandler.cs"
click node_orderrepo "https://github.com/hsynkbulut/omnistore/blob/master/Services/Order/Core/MultiShop.Order.Application/Interfaces/IRepository.cs"
click node_discount "https://github.com/hsynkbulut/omnistore/blob/master/Services/Discount/MultiShop.Discount/Controllers/DiscountsController.cs"
click node_payment "https://github.com/hsynkbulut/omnistore/blob/master/Services/Payment/MultiShop.Payment/Program.cs"
click node_cargo "https://github.com/hsynkbulut/omnistore/blob/master/Services/Cargo/MultiShop.Cargo.WebApi/Controllers/CargoCustomersController.cs"
click node_comments "https://github.com/hsynkbulut/omnistore/blob/master/Services/Comment/MultiShop.Comment/Controllers/UserCommentsController.cs"
click node_commentstore "https://github.com/hsynkbulut/omnistore/blob/master/Services/Comment/MultiShop.Comment/Context/CommentContext.cs"
click node_commentqueue "https://github.com/hsynkbulut/omnistore/blob/master/Services/Comment/MultiShop.Comment/RabbitMQ/IMessagePublisher.cs"
click node_email "https://github.com/hsynkbulut/omnistore/blob/master/Services/Comment/MultiShop.Comment/Services/IEmailService.cs"
click node_images "https://github.com/hsynkbulut/omnistore/blob/master/Services/Images/MultiShop.Images.WebUI/Controllers/DefaultController.cs"
click node_cloudstorage "https://github.com/hsynkbulut/omnistore/blob/master/Services/Images/MultiShop.Images.WebUI/Services/CloudStorageService.cs"
click node_messages "https://github.com/hsynkbulut/omnistore/blob/master/Services/Message/MultiShop.Message/Controllers/UserMessagesController.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_webui,node_shopping,node_admin toneBlue
class node_identityserver,node_consent toneAmber
class node_catalog,node_basket,node_orders,node_orderhandlers,node_orderrepo,node_discount,node_payment,node_cargo toneMint
class node_comments,node_commentstore,node_commentqueue,node_email,node_images,node_cloudstorage,node_messages toneRose
class node_gateway,node_customer toneIndigo
```

## Components

### Storefront

- [Web UI](https://github.com/hsynkbulut/omnistore/blob/master/Frontends/MultiShop.WebUI/Program.cs): `Frontends/MultiShop.WebUI/Program.cs`
- [Shopping Cart](https://github.com/hsynkbulut/omnistore/blob/master/Frontends/MultiShop.WebUI/Controllers/ShoppingCartController.cs): `Frontends/MultiShop.WebUI/Controllers/ShoppingCartController.cs`
- [Admin Catalog](https://github.com/hsynkbulut/omnistore/blob/master/Frontends/MultiShop.WebUI/Areas/Admin/Controllers/ProductController.cs): `Frontends/MultiShop.WebUI/Areas/Admin/Controllers/ProductController.cs`

### Identity

- [Identity Server](https://github.com/hsynkbulut/omnistore/blob/master/IdentityServer/MultiShop.IdentityServer/Quickstart/Account/AccountController.cs): `IdentityServer/MultiShop.IdentityServer/Quickstart/Account/AccountController.cs`
- [Consent Flow](https://github.com/hsynkbulut/omnistore/blob/master/IdentityServer/MultiShop.IdentityServer/Quickstart/Consent/ConsentController.cs): `IdentityServer/MultiShop.IdentityServer/Quickstart/Consent/ConsentController.cs`

### Commerce Services

- [Product Catalog](https://github.com/hsynkbulut/omnistore/blob/master/Services/Catalog/MultiShop.Catalog/Controllers/ProductsController.cs): `Services/Catalog/MultiShop.Catalog/Controllers/ProductsController.cs`
- [Basket Service](https://github.com/hsynkbulut/omnistore/blob/master/Services/Basket/MultiShop.Basket/Controllers/BasketsController.cs): `Services/Basket/MultiShop.Basket/Controllers/BasketsController.cs`
- [Order API](https://github.com/hsynkbulut/omnistore/blob/master/Services/Order/Presentation/MultiShop.Order.WebApi/Controllers/OrderDetailsController.cs): `Services/Order/Presentation/MultiShop.Order.WebApi/Controllers/OrderDetailsController.cs`
- [Order Queries](https://github.com/hsynkbulut/omnistore/blob/master/Services/Order/Core/MultiShop.Order.Application/Features/CQRS/Handlers/AddressHandlers/GetAddressByIdQueryHandler.cs): `Services/Order/Core/MultiShop.Order.Application/Features/CQRS/Handlers/AddressHandlers/GetAddressByIdQueryHandler.cs`
- [Order Repository](https://github.com/hsynkbulut/omnistore/blob/master/Services/Order/Core/MultiShop.Order.Application/Interfaces/IRepository.cs): `Services/Order/Core/MultiShop.Order.Application/Interfaces/IRepository.cs`
- [Discount Service](https://github.com/hsynkbulut/omnistore/blob/master/Services/Discount/MultiShop.Discount/Controllers/DiscountsController.cs): `Services/Discount/MultiShop.Discount/Controllers/DiscountsController.cs`
- [Payment Service](https://github.com/hsynkbulut/omnistore/blob/master/Services/Payment/MultiShop.Payment/Program.cs): `Services/Payment/MultiShop.Payment/Program.cs`
- [Cargo Service](https://github.com/hsynkbulut/omnistore/blob/master/Services/Cargo/MultiShop.Cargo.WebApi/Controllers/CargoCustomersController.cs): `Services/Cargo/MultiShop.Cargo.WebApi/Controllers/CargoCustomersController.cs`

### Engagement Services

- [Comment Service](https://github.com/hsynkbulut/omnistore/blob/master/Services/Comment/MultiShop.Comment/Controllers/UserCommentsController.cs): `Services/Comment/MultiShop.Comment/Controllers/UserCommentsController.cs`
- [Comment Store](https://github.com/hsynkbulut/omnistore/blob/master/Services/Comment/MultiShop.Comment/Context/CommentContext.cs): `Services/Comment/MultiShop.Comment/Context/CommentContext.cs`
- [Message Publisher](https://github.com/hsynkbulut/omnistore/blob/master/Services/Comment/MultiShop.Comment/RabbitMQ/IMessagePublisher.cs): `Services/Comment/MultiShop.Comment/RabbitMQ/IMessagePublisher.cs`
- [Email Service](https://github.com/hsynkbulut/omnistore/blob/master/Services/Comment/MultiShop.Comment/Services/IEmailService.cs): `Services/Comment/MultiShop.Comment/Services/IEmailService.cs`
- [Image Management](https://github.com/hsynkbulut/omnistore/blob/master/Services/Images/MultiShop.Images.WebUI/Controllers/DefaultController.cs): `Services/Images/MultiShop.Images.WebUI/Controllers/DefaultController.cs`
- [Cloud Storage](https://github.com/hsynkbulut/omnistore/blob/master/Services/Images/MultiShop.Images.WebUI/Services/CloudStorageService.cs): `Services/Images/MultiShop.Images.WebUI/Services/CloudStorageService.cs`
- [Messaging Service](https://github.com/hsynkbulut/omnistore/blob/master/Services/Message/MultiShop.Message/Controllers/UserMessagesController.cs): `Services/Message/MultiShop.Message/Controllers/UserMessagesController.cs`

### Platform

- [API Gateway](https://github.com/hsynkbulut/omnistore/blob/master/ApiGateway/MultiShop.OcelotGateway/Program.cs): `ApiGateway/MultiShop.OcelotGateway/Program.cs`

### Other components

- **Customer**

## Connections

- Customer → Web UI: uses (evidence: `README.md`)
- Web UI → Shopping Cart: hosts shopping
- Web UI → API Gateway: calls APIs
- API Gateway → Product Catalog: routes requests (evidence: `README.md`)
- API Gateway → Basket Service: routes requests (evidence: `README.md`)
- API Gateway → Order API: routes requests (evidence: `README.md`)
- API Gateway → Discount Service: routes requests (evidence: `README.md`)
- API Gateway → Identity Server: routes requests (evidence: `README.md`)
- Shopping Cart → Basket Service: uses basket
- Shopping Cart → Order API: submits order
- Shopping Cart → Payment Service: starts payment
- Admin Catalog → Product Catalog: manages products (evidence: `Frontends/MultiShop.WebUI/Areas/Admin/Controllers/ProductController.cs`)
- Order Queries → Order Repository: queries by ID (evidence: `Services/Order/Core/MultiShop.Order.Application/Features/CQRS/Handlers/AddressHandlers/GetAddressByIdQueryHandler.cs`)
- Comment Service → Comment Store: reads and writes (evidence: `Services/Comment/MultiShop.Comment/Controllers/UserCommentsController.cs`)
- Comment Service → Message Publisher: publishes comment (evidence: `Services/Comment/MultiShop.Comment/Controllers/UserCommentsController.cs`)
- Comment Service → Email Service: sends email (evidence: `Services/Comment/MultiShop.Comment/Controllers/UserCommentsController.cs`)
- Image Management → Cloud Storage: uses storage (evidence: `Services/Images/MultiShop.Images.WebUI/Controllers/DefaultController.cs`)
