# weihuang/quorum architecture

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

- Interactive diagram: https://gitdiagram.com/weihuang/quorum
- Repository: https://github.com/weihuang/quorum

## Overview

RUM is peer-to-peer application infrastructure: peers create or join groups, exchange encrypted activity events, and replicate group blockchains so applications can replay shared state. The main runtime is the local API and peer node; documented domain stages include group membership, event submission, block production/consensus, gossip, and synchronization. Storage, cryptography, and application-data replay are internal layers. The README describes these capabilities, but most implementation files were not sampled, so uncertain call wiring is omitted.

Main entry points: [`internal/pkg/chain/chain.go`](https://github.com/weihuang/quorum/blob/main/internal/pkg/chain/chain.go) (Group blockchain), [`internal/pkg/api/server.go`](https://github.com/weihuang/quorum/blob/main/internal/pkg/api/server.go) (HTTP API), [`internal/pkg/p2p/network.go`](https://github.com/weihuang/quorum/blob/main/internal/pkg/p2p/network.go) (Peer node), [`internal/pkg/api/posttogroup.go`](https://github.com/weihuang/quorum/blob/main/internal/pkg/api/posttogroup.go) (Activity events)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["Interfaces"]
  node_cli["Terminal client<br/>[main.go]"]
  node_http_api["HTTP API<br/>[server.go]"]
  node_app_api["App API"]
  node_wasm_api["Browser API"]
end

subgraph group_groups["Groups and events"]
  node_group_ops["Group operations<br/>[creategroup.go]"]
  node_activity["Activity events<br/>[posttogroup.go]"]
  node_chain["Group blockchain<br/>[chain.go]"]
  node_consensus["Block consensus<br/>[consensus.go]"]
  node_producer["Block production<br/>[producer.go]"]
  node_group_sync["Group sync<br/>[syncer.go]"]
end

subgraph group_network["Peer network"]
  node_p2p_node["Peer node<br/>[network.go]"]
  node_gossip["Event gossip<br/>[pubsubconn.go]"]
  node_discovery["Peer discovery<br/>[mdns.go]"]
end

subgraph group_internals["Runtime foundations"]
  node_crypto["Keys and encryption"]
  node_db_manager["Database manager<br/>[dbmgr.go]"]
  node_storage[("Persistent storage<br/>[storage.go]")]
  node_app_data["App data replay<br/>[sync.go]"]
  node_browser_context["Browser runtime context<br/>[context.go]"]
end

node_peer_user(("Peer user"))

node_peer_user -->|"sends requests"| node_http_api
node_http_api -->|"dispatches routes"| node_group_ops
node_http_api -->|"dispatches routes"| node_activity
node_peer_user -->|"uses"| node_cli
node_cli -->|"configures peer"| node_http_api
node_peer_user -->|"uses app"| node_app_api
node_peer_user -->|"uses browser app"| node_wasm_api
node_p2p_node -->|"serves API"| node_http_api
node_p2p_node -->|"discovers peers"| node_discovery
node_p2p_node -->|"exchanges events"| node_gossip
node_gossip -->|"transmits events"| node_activity
node_activity -.->|"records events"| node_chain
node_chain -.->|"uses consensus"| node_consensus
node_producer -.->|"produces blocks"| node_chain
node_group_sync -.->|"synchronizes blocks"| node_chain
node_chain -.->|"persists chain data"| node_storage
node_db_manager -->|"manages stores"| node_storage
node_app_data -.->|"replays blockchain"| node_chain
node_group_ops -.->|"uses keys"| node_crypto
node_browser_context -->|"provides runtime"| node_wasm_api

click node_cli "https://github.com/weihuang/quorum/blob/main/cmd/cli/main.go"
click node_http_api "https://github.com/weihuang/quorum/blob/main/internal/pkg/api/server.go"
click node_app_api "https://github.com/weihuang/quorum/tree/main/pkg/app/api"
click node_wasm_api "https://github.com/weihuang/quorum/tree/main/pkg/wasm/api"
click node_group_ops "https://github.com/weihuang/quorum/blob/main/internal/pkg/api/creategroup.go"
click node_activity "https://github.com/weihuang/quorum/blob/main/internal/pkg/api/posttogroup.go"
click node_chain "https://github.com/weihuang/quorum/blob/main/internal/pkg/chain/chain.go"
click node_consensus "https://github.com/weihuang/quorum/blob/main/internal/pkg/chain/consensus.go"
click node_producer "https://github.com/weihuang/quorum/blob/main/internal/pkg/chain/producer.go"
click node_group_sync "https://github.com/weihuang/quorum/blob/main/internal/pkg/chain/syncer.go"
click node_p2p_node "https://github.com/weihuang/quorum/blob/main/internal/pkg/p2p/network.go"
click node_gossip "https://github.com/weihuang/quorum/blob/main/internal/pkg/pubsubconn/pubsubconn.go"
click node_discovery "https://github.com/weihuang/quorum/blob/main/internal/pkg/p2p/mdns.go"
click node_crypto "https://github.com/weihuang/quorum/tree/main/internal/pkg/crypto"
click node_db_manager "https://github.com/weihuang/quorum/blob/main/internal/pkg/storage/dbmgr.go"
click node_storage "https://github.com/weihuang/quorum/blob/main/internal/pkg/storage/storage.go"
click node_app_data "https://github.com/weihuang/quorum/blob/main/internal/pkg/appdata/sync.go"
click node_browser_context "https://github.com/weihuang/quorum/blob/main/pkg/wasm/context/context.go"

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_cli,node_http_api,node_app_api,node_wasm_api,node_peer_user toneBlue
class node_group_ops,node_activity,node_chain,node_consensus,node_producer,node_group_sync toneAmber
class node_p2p_node,node_gossip,node_discovery toneMint
class node_crypto,node_db_manager,node_storage,node_app_data,node_browser_context toneRose
```

## Components

### Interfaces

- [Terminal client](https://github.com/weihuang/quorum/blob/main/cmd/cli/main.go): `cmd/cli/main.go`
- [HTTP API](https://github.com/weihuang/quorum/blob/main/internal/pkg/api/server.go): `internal/pkg/api/server.go`
- [App API](https://github.com/weihuang/quorum/tree/main/pkg/app/api): `pkg/app/api`
- [Browser API](https://github.com/weihuang/quorum/tree/main/pkg/wasm/api): `pkg/wasm/api`

### Groups and events

- [Group operations](https://github.com/weihuang/quorum/blob/main/internal/pkg/api/creategroup.go): `internal/pkg/api/creategroup.go`
- [Activity events](https://github.com/weihuang/quorum/blob/main/internal/pkg/api/posttogroup.go): `internal/pkg/api/posttogroup.go`
- [Group blockchain](https://github.com/weihuang/quorum/blob/main/internal/pkg/chain/chain.go): `internal/pkg/chain/chain.go`
- [Block consensus](https://github.com/weihuang/quorum/blob/main/internal/pkg/chain/consensus.go): `internal/pkg/chain/consensus.go`
- [Block production](https://github.com/weihuang/quorum/blob/main/internal/pkg/chain/producer.go): `internal/pkg/chain/producer.go`
- [Group sync](https://github.com/weihuang/quorum/blob/main/internal/pkg/chain/syncer.go): `internal/pkg/chain/syncer.go`

### Peer network

- [Peer node](https://github.com/weihuang/quorum/blob/main/internal/pkg/p2p/network.go): `internal/pkg/p2p/network.go`
- [Event gossip](https://github.com/weihuang/quorum/blob/main/internal/pkg/pubsubconn/pubsubconn.go): `internal/pkg/pubsubconn/pubsubconn.go`
- [Peer discovery](https://github.com/weihuang/quorum/blob/main/internal/pkg/p2p/mdns.go): `internal/pkg/p2p/mdns.go`

### Runtime foundations

- [Keys and encryption](https://github.com/weihuang/quorum/tree/main/internal/pkg/crypto): `internal/pkg/crypto`
- [Database manager](https://github.com/weihuang/quorum/blob/main/internal/pkg/storage/dbmgr.go): `internal/pkg/storage/dbmgr.go`
- [Persistent storage](https://github.com/weihuang/quorum/blob/main/internal/pkg/storage/storage.go): `internal/pkg/storage/storage.go`
- [App data replay](https://github.com/weihuang/quorum/blob/main/internal/pkg/appdata/sync.go): `internal/pkg/appdata/sync.go`
- [Browser runtime context](https://github.com/weihuang/quorum/blob/main/pkg/wasm/context/context.go): `pkg/wasm/context/context.go`

### Other components

- **Peer user**

## Connections

- Peer user → HTTP API: sends requests
- HTTP API → Group operations: dispatches routes
- HTTP API → Activity events: dispatches routes
- Peer user → Terminal client: uses
- Terminal client → HTTP API: configures peer
- Peer user → App API: uses app
- Peer user → Browser API: uses browser app
- Peer node → HTTP API: serves API
- Peer node → Peer discovery: discovers peers
- Peer node → Event gossip: exchanges events
- Event gossip → Activity events: transmits events
- Activity events → Group blockchain: records events
- Group blockchain → Block consensus: uses consensus
- Block production → Group blockchain: produces blocks
- Group sync → Group blockchain: synchronizes blocks
- Group blockchain → Persistent storage: persists chain data
- Database manager → Persistent storage: manages stores
- App data replay → Group blockchain: replays blockchain
- Group operations → Keys and encryption: uses keys
- Browser runtime context → Browser API: provides runtime
