# unidentifiedsheep/ecommercespareparts architecture

> Architecture diagram of the GitHub repository unidentifiedsheep/ecommercespareparts, 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/unidentifiedsheep/ecommercespareparts
- Repository: https://github.com/unidentifiedsheep/ecommercespareparts

## Overview

ECommerceSpareParts is a .NET backend for spare-parts commerce, with catalog and warehouse operations, pricing, search, sales, and analytics. The clearest source-backed workflow here is warehouse route management: an API request is dispatched to an application query handler, which reads and projects route records. The README describes additional service capabilities, represented below as documented subsystems; their implementation paths and inter-service wiring are not present in the supplied tree. The analytics handler and S3 adapter provide examples of other internal and infrastructure layers.

Main entry points: [`src/Services/Main/Main.Application/Handlers/StorageRoutes/GetStorageRoutes/GetStorageRoutesHandler.cs`](https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Main/Main.Application/Handlers/StorageRoutes/GetStorageRoutes/GetStorageRoutesHandler.cs) (Route query handler), [`src/Services/Analytics/Analytics.Application/Handlers/ChartDataSources/QueryChartDataSourceHandler.cs`](https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Analytics/Analytics.Application/Handlers/ChartDataSources/QueryChartDataSourceHandler.cs) (Chart query handler), [`src/Services/Main/Main.Api/EndPoints/StorageRoutesEndPoints.cs`](https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Main/Main.Api/EndPoints/StorageRoutesEndPoints.cs) (Storage routes API), [`src/Services/Main/Main.Api/EndPoints/Storages/StoragesEndPoints.cs`](https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Main/Main.Api/EndPoints/Storages/StoragesEndPoints.cs) (Storage management API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_warehouse["Warehouse operations"]
  node_storage_api["Storage routes API"]
  node_route_handler["Route query handler"]
  node_route_repository["Route repository"]
  node_route_projection["Route projection"]
  node_storage_route["Storage route entity<br/>[StorageRoute.cs]"]
  node_storage_api_core["Storage management API"]
  node_storage_routes_validation["Route query validation"]
end

subgraph group_analytics["Analytics"]
  node_analytics_handler["Chart query handler"]
  node_chart_registry["Chart source registry"]
  node_chart_source["Chart data source"]
end

subgraph group_platform["Platform services"]
  node_json_serializer["JSON serializer<br/>[IJsonSerializer.cs]"]
  node_s3_adapter["S3 storage adapter"]
  node_s3_service[("S3 object storage")]
end

subgraph group_documented["Documented services"]
  node_main_service["Main service"]
  node_pricing_service["Pricing and markup"]
  node_search_service["Product search"]
  node_analytics_service["Analytics service"]
  node_gateway["Public gateway"]
  node_message_broker["Event messaging"]
end

node_operator(("API caller"))

node_operator -->|"requests routes"| node_storage_api
node_storage_api -->|"dispatches query"| node_route_handler
node_route_handler -->|"reads routes"| node_route_repository
node_route_handler -->|"projects results"| node_route_projection
node_route_repository -->|"queries entities"| node_storage_route
node_storage_api_core -->|"exposes storage operations"| node_main_service
node_storage_routes_validation -->|"validates query"| node_route_handler
node_analytics_handler -->|"resolves source"| node_chart_registry
node_analytics_handler -->|"deserializes input"| node_json_serializer
node_analytics_handler -->|"runs query"| node_chart_source
node_s3_adapter -->|"reads and writes objects"| node_s3_service
node_main_service -.->|"integrates"| node_pricing_service
node_main_service -.->|"integrates"| node_search_service
node_main_service -.->|"exchanges events"| node_message_broker
node_pricing_service -.->|"exchanges events"| node_message_broker
node_analytics_service -.->|"exchanges events"| node_message_broker
node_gateway -.->|"proxies requests"| node_main_service
node_gateway -.->|"proxies requests"| node_pricing_service
node_gateway -.->|"proxies requests"| node_search_service
node_gateway -.->|"proxies requests"| node_analytics_service

click node_storage_api "https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Main/Main.Api/EndPoints/StorageRoutesEndPoints.cs"
click node_route_handler "https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Main/Main.Application/Handlers/StorageRoutes/GetStorageRoutes/GetStorageRoutesHandler.cs"
click node_storage_route "https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Main/Main.Entities/Storage/StorageRoute.cs"
click node_storage_api_core "https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Main/Main.Api/EndPoints/Storages/StoragesEndPoints.cs"
click node_storage_routes_validation "https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Main/Main.Application/Handlers/StorageRoutes/GetStorageRoutes/GetStorageRoutesDbValidation.cs"
click node_analytics_handler "https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Analytics/Analytics.Application/Handlers/ChartDataSources/QueryChartDataSourceHandler.cs"
click node_json_serializer "https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Core/Abstractions/Interfaces/IJsonSerializer.cs"
click node_s3_adapter "https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Infrastructure/S3/S3StorageService.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_storage_api,node_route_handler,node_route_repository,node_route_projection,node_storage_route,node_storage_api_core,node_storage_routes_validation toneBlue
class node_analytics_handler,node_chart_registry,node_chart_source toneAmber
class node_json_serializer,node_s3_adapter,node_s3_service,node_operator toneMint
class node_main_service,node_pricing_service,node_search_service,node_analytics_service,node_gateway,node_message_broker toneRose
```

## Components

### Warehouse operations

- [Storage routes API](https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Main/Main.Api/EndPoints/StorageRoutesEndPoints.cs): `src/Services/Main/Main.Api/EndPoints/StorageRoutesEndPoints.cs`
- [Route query handler](https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Main/Main.Application/Handlers/StorageRoutes/GetStorageRoutes/GetStorageRoutesHandler.cs): `src/Services/Main/Main.Application/Handlers/StorageRoutes/GetStorageRoutes/GetStorageRoutesHandler.cs`
- **Route repository**
- **Route projection**
- [Storage route entity](https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Main/Main.Entities/Storage/StorageRoute.cs): `src/Services/Main/Main.Entities/Storage/StorageRoute.cs`
- [Storage management API](https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Main/Main.Api/EndPoints/Storages/StoragesEndPoints.cs): `src/Services/Main/Main.Api/EndPoints/Storages/StoragesEndPoints.cs`
- [Route query validation](https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Main/Main.Application/Handlers/StorageRoutes/GetStorageRoutes/GetStorageRoutesDbValidation.cs): `src/Services/Main/Main.Application/Handlers/StorageRoutes/GetStorageRoutes/GetStorageRoutesDbValidation.cs`

### Analytics

- [Chart query handler](https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Services/Analytics/Analytics.Application/Handlers/ChartDataSources/QueryChartDataSourceHandler.cs): `src/Services/Analytics/Analytics.Application/Handlers/ChartDataSources/QueryChartDataSourceHandler.cs`
- **Chart source registry**
- **Chart data source**

### Platform services

- [JSON serializer](https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Core/Abstractions/Interfaces/IJsonSerializer.cs): `src/Core/Abstractions/Interfaces/IJsonSerializer.cs`
- [S3 storage adapter](https://github.com/unidentifiedsheep/ecommercespareparts/blob/master/src/Infrastructure/S3/S3StorageService.cs): `src/Infrastructure/S3/S3StorageService.cs`
- **S3 object storage**

### Documented services

- **Main service**
- **Pricing and markup**
- **Product search**
- **Analytics service**
- **Public gateway**
- **Event messaging**

### Other components

- **API caller**

## Connections

- API caller → Storage routes API: requests routes
- Storage routes API → Route query handler: dispatches query
- Route query handler → Route repository: reads routes
- Route query handler → Route projection: projects results
- Route repository → Storage route entity: queries entities
- Storage management API → Main service: exposes storage operations
- Route query validation → Route query handler: validates query
- Chart query handler → Chart source registry: resolves source
- Chart query handler → JSON serializer: deserializes input
- Chart query handler → Chart data source: runs query
- S3 storage adapter → S3 object storage: reads and writes objects
- Main service → Pricing and markup: integrates
- Main service → Product search: integrates
- Main service → Event messaging: exchanges events
- Pricing and markup → Event messaging: exchanges events
- Analytics service → Event messaging: exchanges events
- Public gateway → Main service: proxies requests
- Public gateway → Pricing and markup: proxies requests
- Public gateway → Product search: proxies requests
- Public gateway → Analytics service: proxies requests
