# georgmangold/console architecture

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

## Overview

Console is a browser-based administration interface for MinIO. Users enter through session-protected routes, then manage buckets and objects or use administrator and monitoring features; the frontend communicates with the Console HTTP API, which connects to the configured MinIO deployment. The graph also preserves identity, encryption, configuration, replication, and operational tools documented by the route and API tree. The sampled sources show route protection and selected UI behavior; most subsystem wiring is represented only at the directory/API boundary.

Main entry points: [`api/client.go`](https://github.com/georgmangold/console/blob/main/api/client.go) (API clients), [`web-app/src/screens/Console/valid-routes.tsx`](https://github.com/georgmangold/console/blob/main/web-app/src/screens/Console/valid-routes.tsx) (Console routes), [`web-app/src/ProtectedRoutes.tsx`](https://github.com/georgmangold/console/blob/main/web-app/src/ProtectedRoutes.tsx) (Protected routes), [`api/custom-server.go`](https://github.com/georgmangold/console/blob/main/api/custom-server.go) (HTTP API server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Browser interface"]
  node_protected["Protected routes"]
  node_route_menu["Console routes<br/>[valid-routes.tsx]"]
  node_object_ui["Object browser"]
  node_transfer["Transfer manager<br/>[transferManager.ts]"]
  node_kms_ui["KMS screens<br/>[KMSRoutes.tsx]"]
  node_ldap_ui["LDAP query"]
  node_logs_ui["Log search"]
end

subgraph group_api["Console API"]
  node_console_server["Console server<br/>[server.go]"]
  node_http_server["HTTP API server<br/>[custom-server.go]"]
  node_api_client["API clients<br/>[client.go]"]
end

subgraph group_management["Storage management"]
  node_bucket_api["Bucket operations"]
  node_object_api["Object operations"]
end

subgraph group_admin["Administration"]
  node_admin_api["Admin operations<br/>[admin_service.go]"]
  node_identity_api["Identity operations"]
  node_config_api["Configuration"]
  node_kms_api["Key management"]
end

subgraph group_operations["Operations"]
  node_monitor_api["Monitoring tools"]
end

node_operator(("Console user"))
node_minio["MinIO deployment"]

node_operator -->|"opens console"| node_protected
node_protected -->|"checks session"| node_console_server
node_protected -->|"requests site status"| node_http_server
node_operator -->|"selects feature"| node_route_menu
node_route_menu -->|"opens browser"| node_object_ui
node_route_menu -->|"opens encryption"| node_kms_ui
node_route_menu -->|"opens identity"| node_ldap_ui
node_route_menu -->|"opens logs"| node_logs_ui
node_object_ui -->|"tracks transfers"| node_transfer
node_console_server -->|"configures"| node_http_server
node_http_server -->|"dispatches API"| node_api_client
node_api_client -->|"calls"| node_bucket_api
node_api_client -->|"calls"| node_object_api
node_api_client -->|"calls"| node_admin_api
node_api_client -->|"calls"| node_identity_api
node_api_client -->|"calls"| node_config_api
node_api_client -->|"calls"| node_kms_api
node_api_client -->|"calls"| node_monitor_api
node_bucket_api -->|"manages buckets"| node_minio
node_object_api -->|"manages objects"| node_minio
node_admin_api -->|"administers"| node_minio
node_identity_api -->|"manages identity"| node_minio
node_config_api -->|"configures"| node_minio
node_kms_api -->|"manages keys"| node_minio
node_monitor_api -->|"queries activity"| node_minio

click node_protected "https://github.com/georgmangold/console/blob/main/web-app/src/ProtectedRoutes.tsx"
click node_route_menu "https://github.com/georgmangold/console/blob/main/web-app/src/screens/Console/valid-routes.tsx"
click node_object_ui "https://github.com/georgmangold/console/tree/main/web-app/src/screens/Console/ObjectBrowser"
click node_transfer "https://github.com/georgmangold/console/blob/main/web-app/src/screens/Console/ObjectBrowser/transferManager.ts"
click node_kms_ui "https://github.com/georgmangold/console/blob/main/web-app/src/screens/Console/KMS/KMSRoutes.tsx"
click node_ldap_ui "https://github.com/georgmangold/console/blob/main/web-app/src/screens/Console/IDP/LDAP/LDAPEntitiesQuery.tsx"
click node_logs_ui "https://github.com/georgmangold/console/blob/main/web-app/src/screens/Console/Logs/LogSearch/LogSearchFullModal.tsx"
click node_console_server "https://github.com/georgmangold/console/blob/main/cmd/console/server.go"
click node_http_server "https://github.com/georgmangold/console/blob/main/api/custom-server.go"
click node_api_client "https://github.com/georgmangold/console/blob/main/api/client.go"
click node_bucket_api "https://github.com/georgmangold/console/tree/main/api/operations/bucket"
click node_object_api "https://github.com/georgmangold/console/tree/main/api/operations/object"
click node_admin_api "https://github.com/georgmangold/console/blob/main/api/admin_service.go"
click node_identity_api "https://github.com/georgmangold/console/tree/main/api/operations/idp"
click node_config_api "https://github.com/georgmangold/console/tree/main/api/operations/configuration"
click node_kms_api "https://github.com/georgmangold/console/tree/main/api/operations/k_m_s"
click node_monitor_api "https://github.com/georgmangold/console/tree/main/api/operations/logging"

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_protected,node_route_menu,node_object_ui,node_transfer,node_kms_ui,node_ldap_ui,node_logs_ui,node_operator toneBlue
class node_console_server,node_http_server,node_api_client toneAmber
class node_bucket_api,node_object_api toneMint
class node_admin_api,node_identity_api,node_config_api,node_kms_api toneRose
class node_monitor_api,node_minio toneIndigo
```

## Components

### Browser interface

- [Protected routes](https://github.com/georgmangold/console/blob/main/web-app/src/ProtectedRoutes.tsx): `web-app/src/ProtectedRoutes.tsx`
- [Console routes](https://github.com/georgmangold/console/blob/main/web-app/src/screens/Console/valid-routes.tsx): `web-app/src/screens/Console/valid-routes.tsx`
- [Object browser](https://github.com/georgmangold/console/tree/main/web-app/src/screens/Console/ObjectBrowser): `web-app/src/screens/Console/ObjectBrowser`
- [Transfer manager](https://github.com/georgmangold/console/blob/main/web-app/src/screens/Console/ObjectBrowser/transferManager.ts): `web-app/src/screens/Console/ObjectBrowser/transferManager.ts`
- [KMS screens](https://github.com/georgmangold/console/blob/main/web-app/src/screens/Console/KMS/KMSRoutes.tsx): `web-app/src/screens/Console/KMS/KMSRoutes.tsx`
- [LDAP query](https://github.com/georgmangold/console/blob/main/web-app/src/screens/Console/IDP/LDAP/LDAPEntitiesQuery.tsx): `web-app/src/screens/Console/IDP/LDAP/LDAPEntitiesQuery.tsx`
- [Log search](https://github.com/georgmangold/console/blob/main/web-app/src/screens/Console/Logs/LogSearch/LogSearchFullModal.tsx): `web-app/src/screens/Console/Logs/LogSearch/LogSearchFullModal.tsx`

### Console API

- [Console server](https://github.com/georgmangold/console/blob/main/cmd/console/server.go): `cmd/console/server.go`
- [HTTP API server](https://github.com/georgmangold/console/blob/main/api/custom-server.go): `api/custom-server.go`
- [API clients](https://github.com/georgmangold/console/blob/main/api/client.go): `api/client.go`

### Storage management

- [Bucket operations](https://github.com/georgmangold/console/tree/main/api/operations/bucket): `api/operations/bucket`
- [Object operations](https://github.com/georgmangold/console/tree/main/api/operations/object): `api/operations/object`

### Administration

- [Admin operations](https://github.com/georgmangold/console/blob/main/api/admin_service.go): `api/admin_service.go`
- [Identity operations](https://github.com/georgmangold/console/tree/main/api/operations/idp): `api/operations/idp`
- [Configuration](https://github.com/georgmangold/console/tree/main/api/operations/configuration): `api/operations/configuration`
- [Key management](https://github.com/georgmangold/console/tree/main/api/operations/k_m_s): `api/operations/k_m_s`

### Operations

- [Monitoring tools](https://github.com/georgmangold/console/tree/main/api/operations/logging): `api/operations/logging`

### Other components

- **Console user**
- **MinIO deployment**

## Connections

- Console user → Protected routes: opens console
- Protected routes → Console server: checks session
- Protected routes → HTTP API server: requests site status
- Console user → Console routes: selects feature
- Console routes → Object browser: opens browser
- Console routes → KMS screens: opens encryption
- Console routes → LDAP query: opens identity
- Console routes → Log search: opens logs
- Object browser → Transfer manager: tracks transfers
- Console server → HTTP API server: configures
- HTTP API server → API clients: dispatches API
- API clients → Bucket operations: calls
- API clients → Object operations: calls
- API clients → Admin operations: calls
- API clients → Identity operations: calls
- API clients → Configuration: calls
- API clients → Key management: calls
- API clients → Monitoring tools: calls
- Bucket operations → MinIO deployment: manages buckets
- Object operations → MinIO deployment: manages objects
- Admin operations → MinIO deployment: administers
- Identity operations → MinIO deployment: manages identity
- Configuration → MinIO deployment: configures
- Key management → MinIO deployment: manages keys
- Monitoring tools → MinIO deployment: queries activity
