# neoexm/shittim-server architecture

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

## Overview

Shittim Server is a local Blue Archive private server: the game client authenticates and sends protocol requests, which are dispatched to game logic that reads game data and persists account progress in SQLite before returning protocol responses. The README also documents gacha, events, missions, story, cafe, shops, and admin operations. Those broader capabilities are represented at their documented subsystem level where their implementation was not sampled; wiring beyond the excerpts is intentionally not asserted.

Main entry points: [`Schale/Data/SchaleDataContext.cs`](https://github.com/neoexm/shittim-server/blob/main/Schale/Data/SchaleDataContext.cs) (Game data context), [`Shittim-Server/Managers/CampaignManager.cs`](https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Managers/CampaignManager.cs) (Campaign stages), [`Schale/FlatData`](https://github.com/neoexm/shittim-server/tree/main/Schale/FlatData) (Game content tables), [`Shittim-Server/Services/EventContentCampaignManager.cs`](https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Services/EventContentCampaignManager.cs) (Event stages)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Client entry"]
  node_gateway["Protocol gateway"]
  node_dispatch["Protocol dispatch<br/>[HandlerManager.cs]"]
  node_ias["IAS / IMS auth<br/>[IasController.cs]"]
end

subgraph group_game["Game services"]
  node_campaign["Campaign stages<br/>[CampaignManager.cs]"]
  node_concentrate["Strategy maps"]
  node_event["Event stages"]
  node_raids["Raid operations<br/>[RaidController.cs]"]
  node_gameplay["Other game features"]
end

subgraph group_state["Data and content"]
  node_context[("Game data context")]
  node_accountmodels["Account models<br/>[UserAccount.cs]"]
  node_progressmodels["Progress models"]
  node_contentdata["Game content tables"]
  node_mapping["Model mapping<br/>[ModelMapping.cs]"]
end

subgraph group_admin["Administration"]
  node_adminapi["Management API"]
  node_devcontent["Content controls"]
  node_controlcenter["Control Center<br/>[main.js]"]
  node_gacha["Gacha settings"]
end

node_player(("Game player"))
node_client["Blue Archive client"]
node_sqlite[("SQLite database")]

node_player -->|"plays through"| node_client
node_client -->|"authenticates"| node_ias
node_client -->|"sends protocols"| node_gateway
node_gateway -->|"dispatches requests"| node_dispatch
node_dispatch -->|"invokes handlers"| node_campaign
node_campaign -->|"reads and writes"| node_context
node_campaign -->|"uses stage data"| node_contentdata
node_campaign -->|"uses strategy logic"| node_concentrate
node_event -->|"uses map logic"| node_concentrate
node_event -->|"reads and writes"| node_context
node_event -->|"uses event data"| node_contentdata
node_raids -->|"reads raid records"| node_context
node_raids -->|"reads raid tables"| node_contentdata
node_gameplay -->|"uses account state"| node_context
node_gameplay -->|"uses game data"| node_contentdata
node_adminapi -->|"manages accounts"| node_context
node_adminapi -->|"writes settings"| node_gacha
node_devcontent -->|"updates content state"| node_context
node_controlcenter -->|"administers server"| node_adminapi
node_context -->|"maps accounts"| node_accountmodels
node_context -->|"maps progress"| node_progressmodels
node_context -->|"persists data"| node_sqlite
node_mapping -->|"maps models"| node_accountmodels
node_mapping -->|"maps models"| node_progressmodels

click node_gateway "https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Controllers/Api/GatewayController.cs"
click node_dispatch "https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Core/HandlerManager.cs"
click node_ias "https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Controllers/SDK/IasController.cs"
click node_campaign "https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Managers/CampaignManager.cs"
click node_concentrate "https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Services/ConcentrateCampaignManager.cs"
click node_event "https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Services/EventContentCampaignManager.cs"
click node_raids "https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Controllers/GM/RaidController.cs"
click node_gameplay "https://github.com/neoexm/shittim-server/tree/main/Shittim-Server"
click node_adminapi "https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Controllers/ManagementController.cs"
click node_devcontent "https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Controllers/Dev/ContentController.cs"
click node_controlcenter "https://github.com/neoexm/shittim-server/blob/main/ShittimControlCenter/main.js"
click node_context "https://github.com/neoexm/shittim-server/blob/main/Schale/Data/SchaleDataContext.cs"
click node_accountmodels "https://github.com/neoexm/shittim-server/blob/main/Schale/Data/Models/UserAccount.cs"
click node_progressmodels "https://github.com/neoexm/shittim-server/tree/main/Schale/Data/GameModel/ProgressModel"
click node_contentdata "https://github.com/neoexm/shittim-server/tree/main/Schale/FlatData"
click node_mapping "https://github.com/neoexm/shittim-server/blob/main/Schale/Data/ModelMapping/ModelMapping.cs"
click node_gacha "https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Controllers/ManagementController.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_gateway,node_dispatch,node_ias,node_client toneBlue
class node_campaign,node_concentrate,node_event,node_raids,node_gameplay,node_sqlite toneAmber
class node_context,node_accountmodels,node_progressmodels,node_contentdata,node_mapping toneMint
class node_adminapi,node_devcontent,node_controlcenter,node_gacha toneRose
class node_player toneIndigo
```

## Components

### Client entry

- [Protocol gateway](https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Controllers/Api/GatewayController.cs): `Shittim-Server/Controllers/Api/GatewayController.cs`
- [Protocol dispatch](https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Core/HandlerManager.cs): `Shittim-Server/Core/HandlerManager.cs`
- [IAS / IMS auth](https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Controllers/SDK/IasController.cs): `Shittim-Server/Controllers/SDK/IasController.cs`

### Game services

- [Campaign stages](https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Managers/CampaignManager.cs): `Shittim-Server/Managers/CampaignManager.cs`
- [Strategy maps](https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Services/ConcentrateCampaignManager.cs): `Shittim-Server/Services/ConcentrateCampaignManager.cs`
- [Event stages](https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Services/EventContentCampaignManager.cs): `Shittim-Server/Services/EventContentCampaignManager.cs`
- [Raid operations](https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Controllers/GM/RaidController.cs): `Shittim-Server/Controllers/GM/RaidController.cs`
- [Other game features](https://github.com/neoexm/shittim-server/tree/main/Shittim-Server): `Shittim-Server`

### Data and content

- [Game data context](https://github.com/neoexm/shittim-server/blob/main/Schale/Data/SchaleDataContext.cs): `Schale/Data/SchaleDataContext.cs`
- [Account models](https://github.com/neoexm/shittim-server/blob/main/Schale/Data/Models/UserAccount.cs): `Schale/Data/Models/UserAccount.cs`
- [Progress models](https://github.com/neoexm/shittim-server/tree/main/Schale/Data/GameModel/ProgressModel): `Schale/Data/GameModel/ProgressModel`
- [Game content tables](https://github.com/neoexm/shittim-server/tree/main/Schale/FlatData): `Schale/FlatData`
- [Model mapping](https://github.com/neoexm/shittim-server/blob/main/Schale/Data/ModelMapping/ModelMapping.cs): `Schale/Data/ModelMapping/ModelMapping.cs`

### Administration

- [Management API](https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Controllers/ManagementController.cs): `Shittim-Server/Controllers/ManagementController.cs`
- [Content controls](https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Controllers/Dev/ContentController.cs): `Shittim-Server/Controllers/Dev/ContentController.cs`
- [Control Center](https://github.com/neoexm/shittim-server/blob/main/ShittimControlCenter/main.js): `ShittimControlCenter/main.js`
- [Gacha settings](https://github.com/neoexm/shittim-server/blob/main/Shittim-Server/Controllers/ManagementController.cs): `Shittim-Server/Controllers/ManagementController.cs`

### Other components

- **Game player**
- **Blue Archive client**
- **SQLite database**

## Connections

- Game player → Blue Archive client: plays through
- Blue Archive client → IAS / IMS auth: authenticates
- Blue Archive client → Protocol gateway: sends protocols
- Protocol gateway → Protocol dispatch: dispatches requests
- Protocol dispatch → Campaign stages: invokes handlers
- Campaign stages → Game data context: reads and writes
- Campaign stages → Game content tables: uses stage data
- Campaign stages → Strategy maps: uses strategy logic
- Event stages → Strategy maps: uses map logic
- Event stages → Game data context: reads and writes
- Event stages → Game content tables: uses event data
- Raid operations → Game data context: reads raid records
- Raid operations → Game content tables: reads raid tables
- Other game features → Game data context: uses account state
- Other game features → Game content tables: uses game data
- Management API → Game data context: manages accounts
- Management API → Gacha settings: writes settings
- Content controls → Game data context: updates content state
- Control Center → Management API: administers server
- Game data context → Account models: maps accounts
- Game data context → Progress models: maps progress
- Game data context → SQLite database: persists data
- Model mapping → Account models: maps models
- Model mapping → Progress models: maps models
