# mrrobot2524/mini_marketplace architecture

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

- Interactive diagram: https://gitdiagram.com/mrrobot2524/mini_marketplace
- Repository: https://github.com/mrrobot2524/mini_marketplace

## Overview

Marketplace.Api is an HTTP marketplace backend for product catalog management and customer orders. Users can obtain JWTs, browse and maintain products, then create idempotent orders, list or retrieve their orders, and cancel pending orders. Order creation coordinates inventory, order items, and idempotency within repository transactions; retrieval uses a Redis cache, while a background service cancels expired pending orders. The graph follows sampled controllers, services, and repository excerpts; less-visible capabilities are included where the tree and excerpts support them, with uncertain wiring omitted.

Main entry points: [`Marketplace.Api/Repositories/OrderRepository.cs`](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Repositories/OrderRepository.cs) (Order Repository), [`Marketplace.Api/Services/OrderService.cs`](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Services/OrderService.cs) (Order Service), [`Marketplace.Api/Repositories/ProductRepository.cs`](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Repositories/ProductRepository.cs) (Product Repository), [`Marketplace.Api/Services/RedisCacheService.cs`](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Services/RedisCacheService.cs) (Redis Cache Service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_products_api["Products Controller"]
  node_orders_api["Orders Controller<br/>[OrderController.cs]"]
end

subgraph group_identity["Identity"]
  node_auth["Auth Controller<br/>[AuthController.cs]"]
  node_jwt["JWT Authentication<br/>[Program.cs]"]
end

subgraph group_catalog["Product Catalog"]
  node_product_service["Product Service<br/>[ProductService.cs]"]
end

subgraph group_orders["Order Management"]
  node_order_service["Order Service<br/>[OrderService.cs]"]
  node_cancellation["Pending Order Worker"]
end

subgraph group_state["Persistence And Cache"]
  node_product_repo["Product Repository"]
  node_order_repo["Order Repository<br/>[OrderRepository.cs]"]
  node_order_items["Order Item Repository"]
  node_idempotency["Idempotency Repository"]
  node_cache["Redis Cache Service"]
  node_postgres[("PostgreSQL")]
  node_redis[("Redis")]
end

node_client(("API Client"))

node_client -->|"requests token"| node_auth
node_auth -->|"returns JWT"| node_client
node_client -->|"presents JWT"| node_jwt
node_client -->|"catalog requests"| node_products_api
node_products_api -->|"dispatches"| node_product_service
node_product_service -->|"manages products"| node_product_repo
node_product_repo -->|"reads and writes"| node_postgres
node_client -->|"order requests"| node_orders_api
node_orders_api -->|"dispatches"| node_order_service
node_order_service -->|"creates and queries"| node_order_repo
node_order_repo -->|"checks stock"| node_product_repo
node_order_repo -->|"stores and loads items"| node_order_items
node_order_repo -->|"checks and saves keys"| node_idempotency
node_order_repo -->|"runs transactions"| node_postgres
node_order_items -->|"reads and writes"| node_postgres
node_idempotency -->|"reads and writes"| node_postgres
node_order_service -->|"gets, sets, invalidates"| node_cache
node_cache -->|"reads and writes"| node_redis
node_cancellation -->|"finds and cancels expired"| node_order_repo
node_cancellation -->|"invalidates order cache"| node_cache

click node_auth "https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Controllers/AuthController.cs"
click node_jwt "https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Program.cs"
click node_products_api "https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Controllers/ProductsController.cs"
click node_product_service "https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Services/ProductService.cs"
click node_product_repo "https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Repositories/ProductRepository.cs"
click node_orders_api "https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Controllers/OrderController.cs"
click node_order_service "https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Services/OrderService.cs"
click node_order_repo "https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Repositories/OrderRepository.cs"
click node_order_items "https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Repositories/OrderItemRepository.cs"
click node_idempotency "https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Repositories/IdempotencyKeyRepository.cs"
click node_cache "https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Services/RedisCacheService.cs"
click node_cancellation "https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Services/PendingOrderCancellationService.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_products_api,node_orders_api,node_client toneBlue
class node_auth,node_jwt toneAmber
class node_product_service toneMint
class node_order_service,node_cancellation toneRose
class node_product_repo,node_order_repo,node_order_items,node_idempotency,node_cache,node_postgres,node_redis toneIndigo
```

## Components

### HTTP API

- [Products Controller](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Controllers/ProductsController.cs): `Marketplace.Api/Controllers/ProductsController.cs`
- [Orders Controller](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Controllers/OrderController.cs): `Marketplace.Api/Controllers/OrderController.cs`

### Identity

- [Auth Controller](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Controllers/AuthController.cs): `Marketplace.Api/Controllers/AuthController.cs`
- [JWT Authentication](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Program.cs): `Marketplace.Api/Program.cs`

### Product Catalog

- [Product Service](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Services/ProductService.cs): `Marketplace.Api/Services/ProductService.cs`

### Order Management

- [Order Service](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Services/OrderService.cs): `Marketplace.Api/Services/OrderService.cs`
- [Pending Order Worker](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Services/PendingOrderCancellationService.cs): `Marketplace.Api/Services/PendingOrderCancellationService.cs`

### Persistence And Cache

- [Product Repository](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Repositories/ProductRepository.cs): `Marketplace.Api/Repositories/ProductRepository.cs`
- [Order Repository](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Repositories/OrderRepository.cs): `Marketplace.Api/Repositories/OrderRepository.cs`
- [Order Item Repository](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Repositories/OrderItemRepository.cs): `Marketplace.Api/Repositories/OrderItemRepository.cs`
- [Idempotency Repository](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Repositories/IdempotencyKeyRepository.cs): `Marketplace.Api/Repositories/IdempotencyKeyRepository.cs`
- [Redis Cache Service](https://github.com/mrrobot2524/mini_marketplace/blob/main/Marketplace.Api/Services/RedisCacheService.cs): `Marketplace.Api/Services/RedisCacheService.cs`
- **PostgreSQL**
- **Redis**

### Other components

- **API Client**

## Connections

- API Client → Auth Controller: requests token
- Auth Controller → API Client: returns JWT
- API Client → JWT Authentication: presents JWT
- API Client → Products Controller: catalog requests
- Products Controller → Product Service: dispatches
- Product Service → Product Repository: manages products
- Product Repository → PostgreSQL: reads and writes
- API Client → Orders Controller: order requests
- Orders Controller → Order Service: dispatches
- Order Service → Order Repository: creates and queries
- Order Repository → Product Repository: checks stock
- Order Repository → Order Item Repository: stores and loads items
- Order Repository → Idempotency Repository: checks and saves keys
- Order Repository → PostgreSQL: runs transactions
- Order Item Repository → PostgreSQL: reads and writes
- Idempotency Repository → PostgreSQL: reads and writes
- Order Service → Redis Cache Service: gets, sets, invalidates
- Redis Cache Service → Redis: reads and writes
- Pending Order Worker → Order Repository: finds and cancels expired
- Pending Order Worker → Redis Cache Service: invalidates order cache
