# dathabe/studiooms architecture

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

- Interactive diagram: https://gitdiagram.com/dathabe/studiooms
- Repository: https://github.com/dathabe/studiooms

## Overview

StudioOMS is an order-management system exposed through an ASP.NET API, with a Blazor WebAssembly client and an SDK. The main user workflow is to authenticate, then manage users, employees and customers and perform order operations, including assignment, state changes and timing consumption. The tree also shows session/permission services, domain models, EF Core persistence and order/me queries. The README gives no capability detail, and most endpoint and handler implementations were not sampled, so their internal dispatch links are omitted.

Main entry points: [`src/StudioOMS.WebApi/Program.cs`](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi/Program.cs) (API host), [`src/StudioOMS.Infrastructure/EfCore/AppDbContext.cs`](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Infrastructure/EfCore/AppDbContext.cs) (EF Core database), [`src/StudioOMS.Infrastructure/Session/SessionManager.cs`](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Infrastructure/Session/SessionManager.cs) (Session manager), [`src/StudioOMS.Web/Program.cs`](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Web/Program.cs) (Blazor client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client access"]
  node_blazor["Blazor client<br/>[Program.cs]"]
  node_sdk["Web API SDK<br/>[ServerRoutes.cs]"]
end

subgraph group_api["HTTP API"]
  node_api_host["API host<br/>[Program.cs]"]
  node_routes["API routes<br/>[WebApiRoutes.cs]"]
  node_auth_endpoints["Login and me<br/>[LoginEndpoint.cs]"]
  node_people_endpoints["User and staff<br/>[UserEndpoint.cs]"]
  node_customer_endpoint["Customer operations"]
  node_order_endpoint["Order operations<br/>[OrderEndpoint.cs]"]
  node_session_middleware["Session middleware"]
end

subgraph group_application["Application and domain"]
  node_requests["Application requests"]
  node_sessions["Session contracts<br/>[ISessionManager.cs]"]
  node_domain["OMS domain<br/>[Order.cs]"]
  node_order_query_contract["Order query contract<br/>[IOrderQuery.cs]"]
end

subgraph group_infrastructure["Persistence and services"]
  node_db[("EF Core database<br/>[AppDbContext.cs]")]
  node_repositories["Entity repositories<br/>[Repository.cs]"]
  node_order_query["Order list query<br/>[OrderQuery.cs]"]
  node_session_manager["Session manager<br/>[SessionManager.cs]"]
  node_session_store[("Session cache")]
end

node_user(("OMS user"))

node_user -->|"uses"| node_blazor
node_blazor -->|"requests"| node_sdk
node_sdk -->|"HTTP calls"| node_api_host
node_api_host -->|"maps"| node_routes
node_api_host -->|"installs"| node_session_middleware
node_api_host -->|"registers infrastructure"| node_db
node_order_query -->|"queries"| node_db
node_session_manager -->|"loads user"| node_db
node_session_manager -->|"saves or removes"| node_session_store
node_repositories -->|"reads and writes"| node_db

click node_blazor "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Web/Program.cs"
click node_sdk "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi.Sdk/Routes/ServerRoutes.cs"
click node_api_host "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi/Program.cs"
click node_routes "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi.Routes/WebApiRoutes.cs"
click node_auth_endpoints "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi/Endpoints/LoginEndpoint.cs"
click node_people_endpoints "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi/Endpoints/UserEndpoint.cs"
click node_customer_endpoint "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi/Endpoints/CustomerEndpoint.cs"
click node_order_endpoint "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi/Endpoints/OrderEndpoint.cs"
click node_session_middleware "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi/Middlewares/CurrentSessionMiddleware.cs"
click node_requests "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Application/Orders/OrderListRequest.cs"
click node_sessions "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Application/Session/ISessionManager.cs"
click node_domain "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Domain/Orders/Order.cs"
click node_order_query_contract "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Application/Orders/IOrderQuery.cs"
click node_db "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Infrastructure/EfCore/AppDbContext.cs"
click node_repositories "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Infrastructure/Repositories/Repository.cs"
click node_order_query "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Infrastructure/Queries/OrderQuery.cs"
click node_session_manager "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Infrastructure/Session/SessionManager.cs"
click node_session_store "https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Infrastructure/Session/SessionInfoRepository.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_blazor,node_sdk,node_user toneBlue
class node_api_host,node_routes,node_auth_endpoints,node_people_endpoints,node_customer_endpoint,node_order_endpoint,node_session_middleware toneAmber
class node_requests,node_sessions,node_domain,node_order_query_contract toneMint
class node_db,node_repositories,node_order_query,node_session_manager,node_session_store toneRose
```

## Components

### Client access

- [Blazor client](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Web/Program.cs): `src/StudioOMS.Web/Program.cs`
- [Web API SDK](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi.Sdk/Routes/ServerRoutes.cs): `src/StudioOMS.WebApi.Sdk/Routes/ServerRoutes.cs`

### HTTP API

- [API host](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi/Program.cs): `src/StudioOMS.WebApi/Program.cs`
- [API routes](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi.Routes/WebApiRoutes.cs): `src/StudioOMS.WebApi.Routes/WebApiRoutes.cs`
- [Login and me](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi/Endpoints/LoginEndpoint.cs): `src/StudioOMS.WebApi/Endpoints/LoginEndpoint.cs`
- [User and staff](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi/Endpoints/UserEndpoint.cs): `src/StudioOMS.WebApi/Endpoints/UserEndpoint.cs`
- [Customer operations](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi/Endpoints/CustomerEndpoint.cs): `src/StudioOMS.WebApi/Endpoints/CustomerEndpoint.cs`
- [Order operations](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi/Endpoints/OrderEndpoint.cs): `src/StudioOMS.WebApi/Endpoints/OrderEndpoint.cs`
- [Session middleware](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.WebApi/Middlewares/CurrentSessionMiddleware.cs): `src/StudioOMS.WebApi/Middlewares/CurrentSessionMiddleware.cs`

### Application and domain

- [Application requests](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Application/Orders/OrderListRequest.cs): `src/StudioOMS.Application/Orders/OrderListRequest.cs`
- [Session contracts](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Application/Session/ISessionManager.cs): `src/StudioOMS.Application/Session/ISessionManager.cs`
- [OMS domain](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Domain/Orders/Order.cs): `src/StudioOMS.Domain/Orders/Order.cs`
- [Order query contract](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Application/Orders/IOrderQuery.cs): `src/StudioOMS.Application/Orders/IOrderQuery.cs`

### Persistence and services

- [EF Core database](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Infrastructure/EfCore/AppDbContext.cs): `src/StudioOMS.Infrastructure/EfCore/AppDbContext.cs`
- [Entity repositories](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Infrastructure/Repositories/Repository.cs): `src/StudioOMS.Infrastructure/Repositories/Repository.cs`
- [Order list query](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Infrastructure/Queries/OrderQuery.cs): `src/StudioOMS.Infrastructure/Queries/OrderQuery.cs`
- [Session manager](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Infrastructure/Session/SessionManager.cs): `src/StudioOMS.Infrastructure/Session/SessionManager.cs`
- [Session cache](https://github.com/dathabe/studiooms/blob/dev/src/StudioOMS.Infrastructure/Session/SessionInfoRepository.cs): `src/StudioOMS.Infrastructure/Session/SessionInfoRepository.cs`

### Other components

- **OMS user**

## Connections

- OMS user → Blazor client: uses
- Blazor client → Web API SDK: requests
- Web API SDK → API host: HTTP calls
- API host → API routes: maps
- API host → Session middleware: installs
- API host → EF Core database: registers infrastructure
- Order list query → EF Core database: queries
- Session manager → EF Core database: loads user
- Session manager → Session cache: saves or removes
- Entity repositories → EF Core database: reads and writes
