# sethanh/sln-api architecture

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

- Interactive diagram: https://gitdiagram.com/sethanh/sln-api
- Repository: https://github.com/sethanh/sln-api

## Overview

sln-api is a multi-service .NET API solution, with management, payment, and realtime-publishing products plus a Kafka consumer. The visible request path is HTTP controller → MediatR dispatch → request handler; the handlers’ downstream calls are not shown in the sampled source, so those links are omitted. The tree documents account, task/work, financial, payment, and realtime capabilities. This map focuses on runtime products; infrastructure services are documented in the README, but their application-level connections are not established by the samples.

Main entry points: [`Sln.Management/Sln.Management.Host/Controllers`](https://github.com/sethanh/sln-api/tree/master/Sln.Management/Sln.Management.Host/Controllers) (Management endpoints), [`Sln.Management/Sln.Management.Host/ManagementControllerBase.cs`](https://github.com/sethanh/sln-api/blob/master/Sln.Management/Sln.Management.Host/ManagementControllerBase.cs) (MediatR dispatch), [`Sln.Payment/Sln.Payment.Host/Controllers`](https://github.com/sethanh/sln-api/tree/master/Sln.Payment/Sln.Payment.Host/Controllers) (Payment endpoints), [`Sln.Publisher/Sln.Publisher.Host/Controllers/RealtimeItemsController.cs`](https://github.com/sethanh/sln-api/blob/master/Sln.Publisher/Sln.Publisher.Host/Controllers/RealtimeItemsController.cs) (Realtime endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_management["Management API"]
  node_management_api["Management endpoints<br/>[Controllers]"]
  node_management_dispatch["MediatR dispatch"]
  node_management_handlers["Request handlers<br/>[RequestHandlers]"]
  node_management_accounts["Accounts<br/>[Accounts]"]
  node_management_work["Work management<br/>[WorkManagements]"]
  node_management_finance["Financial management"]
  node_management_data[("Management persistence")]
end

subgraph group_payment["Payment API"]
  node_payment_api["Payment endpoints<br/>[Controllers]"]
  node_payment_dispatch["MediatR dispatch"]
  node_payment_accounts["Accounts<br/>[Accounts]"]
  node_payment_sales["Sales catalog<br/>[Sales]"]
  node_payment_messaging["Conversations<br/>[Messages]"]
  node_payment_qr["QR payments<br/>[Payments]"]
  node_payment_social["Posts and contacts<br/>[Capturess]"]
end

subgraph group_realtime["Realtime Publishing"]
  node_publisher_api["Realtime endpoints"]
  node_publisher_dispatch["MediatR dispatch"]
  node_publisher_items["Realtime items"]
end

subgraph group_messaging["Messaging Workers"]
  node_kafka_worker["Kafka consumer"]
  node_kafka_handler["Kafka message handler"]
  node_management_kafka_handler["Management message handler"]
end

subgraph group_shared["Shared Runtime"]
  node_internal_auth["Internal authentication"]
end

node_user(("API client"))

node_user -->|"HTTP requests"| node_management_api
node_management_api -->|"dispatches"| node_management_dispatch
node_management_dispatch -->|"sends requests"| node_management_handlers
node_user -->|"HTTP requests"| node_payment_api
node_payment_api -->|"dispatches"| node_payment_dispatch
node_user -->|"HTTP requests"| node_publisher_api
node_publisher_api -->|"dispatches"| node_publisher_dispatch

click node_management_api "https://github.com/sethanh/sln-api/tree/master/Sln.Management/Sln.Management.Host/Controllers"
click node_management_dispatch "https://github.com/sethanh/sln-api/blob/master/Sln.Management/Sln.Management.Host/ManagementControllerBase.cs"
click node_management_handlers "https://github.com/sethanh/sln-api/tree/master/Sln.Management/Sln.Management.Host/RequestHandlers"
click node_management_accounts "https://github.com/sethanh/sln-api/tree/master/Sln.Management/Sln.Management.Business/Services/Accounts"
click node_management_work "https://github.com/sethanh/sln-api/tree/master/Sln.Management/Sln.Management.Business/Services/WorkManagements"
click node_management_finance "https://github.com/sethanh/sln-api/tree/master/Sln.Management/Sln.Management.Business/Services/FinancialManagements"
click node_management_data "https://github.com/sethanh/sln-api/blob/master/Sln.Management/Sln.Management.Data/ManagementDbContext.cs"
click node_payment_api "https://github.com/sethanh/sln-api/tree/master/Sln.Payment/Sln.Payment.Host/Controllers"
click node_payment_dispatch "https://github.com/sethanh/sln-api/blob/master/Sln.Payment/Sln.Payment.Host/PaymentControllerBase.cs"
click node_payment_accounts "https://github.com/sethanh/sln-api/tree/master/Sln.Payment/Sln.Payment.Business/Managers/Accounts"
click node_payment_sales "https://github.com/sethanh/sln-api/tree/master/Sln.Payment/Sln.Payment.Business/Managers/Sales"
click node_payment_messaging "https://github.com/sethanh/sln-api/tree/master/Sln.Payment/Sln.Payment.Business/Managers/Messages"
click node_payment_qr "https://github.com/sethanh/sln-api/tree/master/Sln.Payment/Sln.Payment.Business/Managers/Payments"
click node_payment_social "https://github.com/sethanh/sln-api/tree/master/Sln.Payment/Sln.Payment.Business/Managers/Capturess"
click node_publisher_api "https://github.com/sethanh/sln-api/blob/master/Sln.Publisher/Sln.Publisher.Host/Controllers/RealtimeItemsController.cs"
click node_publisher_dispatch "https://github.com/sethanh/sln-api/blob/master/Sln.Publisher/Sln.Publisher.Host/Infras/PublisherControllerBase.cs"
click node_publisher_items "https://github.com/sethanh/sln-api/blob/master/Sln.Publisher/Sln.Publisher.Business/Managers/Realtime/RealtimeItemManager.cs"
click node_kafka_worker "https://github.com/sethanh/sln-api/blob/master/Sln.Management/Sln.Management.KafkaConsumer/Worker/BackgroundConsumer.cs"
click node_kafka_handler "https://github.com/sethanh/sln-api/blob/master/Sln.Management/Sln.Management.KafkaConsumer/EventHandlers/Kafka/KafkaPushMessageHandler.cs"
click node_management_kafka_handler "https://github.com/sethanh/sln-api/blob/master/Sln.Management/Sln.Management.Host/EventHandlers/Kafka/KafkaPushMessageHandler.cs"
click node_internal_auth "https://github.com/sethanh/sln-api/blob/master/Sln.Shared/Sln.Shared.Host/Configurations/InternalAuthenticationHandler.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_management_api,node_management_dispatch,node_management_handlers,node_management_accounts,node_management_work,node_management_finance,node_management_data,node_user toneBlue
class node_payment_api,node_payment_dispatch,node_payment_accounts,node_payment_sales,node_payment_messaging,node_payment_qr,node_payment_social toneAmber
class node_publisher_api,node_publisher_dispatch,node_publisher_items toneMint
class node_kafka_worker,node_kafka_handler,node_management_kafka_handler toneRose
class node_internal_auth toneIndigo
```

## Components

### Management API

- [Management endpoints](https://github.com/sethanh/sln-api/tree/master/Sln.Management/Sln.Management.Host/Controllers): `Sln.Management/Sln.Management.Host/Controllers`
- [MediatR dispatch](https://github.com/sethanh/sln-api/blob/master/Sln.Management/Sln.Management.Host/ManagementControllerBase.cs): `Sln.Management/Sln.Management.Host/ManagementControllerBase.cs`
- [Request handlers](https://github.com/sethanh/sln-api/tree/master/Sln.Management/Sln.Management.Host/RequestHandlers): `Sln.Management/Sln.Management.Host/RequestHandlers`
- [Accounts](https://github.com/sethanh/sln-api/tree/master/Sln.Management/Sln.Management.Business/Services/Accounts): `Sln.Management/Sln.Management.Business/Services/Accounts`
- [Work management](https://github.com/sethanh/sln-api/tree/master/Sln.Management/Sln.Management.Business/Services/WorkManagements): `Sln.Management/Sln.Management.Business/Services/WorkManagements`
- [Financial management](https://github.com/sethanh/sln-api/tree/master/Sln.Management/Sln.Management.Business/Services/FinancialManagements): `Sln.Management/Sln.Management.Business/Services/FinancialManagements`
- [Management persistence](https://github.com/sethanh/sln-api/blob/master/Sln.Management/Sln.Management.Data/ManagementDbContext.cs): `Sln.Management/Sln.Management.Data/ManagementDbContext.cs`

### Payment API

- [Payment endpoints](https://github.com/sethanh/sln-api/tree/master/Sln.Payment/Sln.Payment.Host/Controllers): `Sln.Payment/Sln.Payment.Host/Controllers`
- [MediatR dispatch](https://github.com/sethanh/sln-api/blob/master/Sln.Payment/Sln.Payment.Host/PaymentControllerBase.cs): `Sln.Payment/Sln.Payment.Host/PaymentControllerBase.cs`
- [Accounts](https://github.com/sethanh/sln-api/tree/master/Sln.Payment/Sln.Payment.Business/Managers/Accounts): `Sln.Payment/Sln.Payment.Business/Managers/Accounts`
- [Sales catalog](https://github.com/sethanh/sln-api/tree/master/Sln.Payment/Sln.Payment.Business/Managers/Sales): `Sln.Payment/Sln.Payment.Business/Managers/Sales`
- [Conversations](https://github.com/sethanh/sln-api/tree/master/Sln.Payment/Sln.Payment.Business/Managers/Messages): `Sln.Payment/Sln.Payment.Business/Managers/Messages`
- [QR payments](https://github.com/sethanh/sln-api/tree/master/Sln.Payment/Sln.Payment.Business/Managers/Payments): `Sln.Payment/Sln.Payment.Business/Managers/Payments`
- [Posts and contacts](https://github.com/sethanh/sln-api/tree/master/Sln.Payment/Sln.Payment.Business/Managers/Capturess): `Sln.Payment/Sln.Payment.Business/Managers/Capturess`

### Realtime Publishing

- [Realtime endpoints](https://github.com/sethanh/sln-api/blob/master/Sln.Publisher/Sln.Publisher.Host/Controllers/RealtimeItemsController.cs): `Sln.Publisher/Sln.Publisher.Host/Controllers/RealtimeItemsController.cs`
- [MediatR dispatch](https://github.com/sethanh/sln-api/blob/master/Sln.Publisher/Sln.Publisher.Host/Infras/PublisherControllerBase.cs): `Sln.Publisher/Sln.Publisher.Host/Infras/PublisherControllerBase.cs`
- [Realtime items](https://github.com/sethanh/sln-api/blob/master/Sln.Publisher/Sln.Publisher.Business/Managers/Realtime/RealtimeItemManager.cs): `Sln.Publisher/Sln.Publisher.Business/Managers/Realtime/RealtimeItemManager.cs`

### Messaging Workers

- [Kafka consumer](https://github.com/sethanh/sln-api/blob/master/Sln.Management/Sln.Management.KafkaConsumer/Worker/BackgroundConsumer.cs): `Sln.Management/Sln.Management.KafkaConsumer/Worker/BackgroundConsumer.cs`
- [Kafka message handler](https://github.com/sethanh/sln-api/blob/master/Sln.Management/Sln.Management.KafkaConsumer/EventHandlers/Kafka/KafkaPushMessageHandler.cs): `Sln.Management/Sln.Management.KafkaConsumer/EventHandlers/Kafka/KafkaPushMessageHandler.cs`
- [Management message handler](https://github.com/sethanh/sln-api/blob/master/Sln.Management/Sln.Management.Host/EventHandlers/Kafka/KafkaPushMessageHandler.cs): `Sln.Management/Sln.Management.Host/EventHandlers/Kafka/KafkaPushMessageHandler.cs`

### Shared Runtime

- [Internal authentication](https://github.com/sethanh/sln-api/blob/master/Sln.Shared/Sln.Shared.Host/Configurations/InternalAuthenticationHandler.cs): `Sln.Shared/Sln.Shared.Host/Configurations/InternalAuthenticationHandler.cs`

### Other components

- **API client**

## Connections

- API client → Management endpoints: HTTP requests
- Management endpoints → MediatR dispatch: dispatches
- MediatR dispatch → Request handlers: sends requests
- API client → Payment endpoints: HTTP requests
- Payment endpoints → MediatR dispatch: dispatches
- API client → Realtime endpoints: HTTP requests
- Realtime endpoints → MediatR dispatch: dispatches
