# manirajkatuwal/krab-pub architecture

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

- Interactive diagram: https://gitdiagram.com/manirajkatuwal/krab-pub
- Repository: https://github.com/manirajkatuwal/krab-pub

## Overview

Krab is a server-first Rust web framework and reference multi-service application. Its main user flow is a browser request routed by the frontend, rendered as HTML with selectively interactive islands, then hydrated and navigated client-side; the frontend can also call domain services through protocol-aware clients. The workspace adds authentication, user persistence, supervised service composition, and CLI operational controls. Some subsystems are included from README capabilities and the file tree; their internal wiring is not shown where source excerpts were unavailable.

Main entry points: [`services/service_frontend/src/main.rs`](https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_frontend/src/main.rs) (Frontend service), [`crates/tooling/krab_orchestrator/src/main.rs`](https://github.com/manirajkatuwal/krab-pub/blob/main/crates/tooling/krab_orchestrator/src/main.rs) (Service orchestrator), [`services/service_frontend/src/rendering.rs`](https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_frontend/src/rendering.rs) (Page rendering), [`services/service_frontend/src/protocol_client.rs`](https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_frontend/src/protocol_client.rs) (Protocol client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_frontend["Frontend service<br/>[main.rs]"]
  node_routes["HTTP routes<br/>[routes.rs]"]
  node_rendering["Page rendering<br/>[rendering.rs]"]
  node_islands["Island components<br/>[components.rs]"]
  node_client["Island hydration<br/>[lib.rs]"]
  node_router["Client navigation<br/>[router.rs]"]
end

subgraph group_runtime["Framework runtime"]
  node_core["Core runtime<br/>[lib.rs]"]
  node_config["Runtime config<br/>[config.rs]"]
  node_http["HTTP service<br/>[service.rs]"]
  node_macros["View and server macros<br/>[lib.rs]"]
end

subgraph group_services["Domain services"]
  node_protocol_client["Protocol client<br/>[protocol_client.rs]"]
  node_auth["Auth service<br/>[main.rs]"]
  node_users["Users service<br/>[main.rs]"]
  node_user_adapters["Users API adapters<br/>[mod.rs]"]
  node_user_domain["User domain<br/>[service.rs]"]
  node_user_db[("User persistence<br/>[mod.rs]")]
  node_contracts["Service contracts"]
end

subgraph group_operations["Operations"]
  node_orchestrator["Service orchestrator<br/>[main.rs]"]
  node_cli["Krab CLI<br/>[main.rs]"]
  node_governance["Operational governance<br/>[governance.rs]"]
end

node_browser(("Browser user"))
node_postgres[("PostgreSQL")]

node_browser -->|"requests pages"| node_frontend
node_frontend -->|"loads configuration"| node_config
node_frontend -->|"serves routes"| node_http
node_frontend -->|"registers routes"| node_routes
node_routes -->|"renders pages"| node_rendering
node_rendering -->|"returns HTML"| node_browser
node_rendering -->|"renders components"| node_islands
node_browser -->|"loads WASM"| node_client
node_client -->|"starts navigation"| node_router
node_router -->|"fetches pages"| node_frontend
node_frontend -->|"calls domain APIs"| node_protocol_client
node_protocol_client -->|"uses service contracts"| node_contracts
node_protocol_client -->|"requests user operations"| node_users
node_auth -->|"serves HTTP"| node_http
node_users -->|"exposes APIs"| node_user_adapters
node_user_adapters -->|"dispatches operations"| node_user_domain
node_user_domain -->|"reads users"| node_user_db
node_user_db -.->|"persists data"| node_postgres
node_orchestrator -->|"starts and supervises"| node_auth
node_orchestrator -->|"starts and supervises"| node_users
node_orchestrator -->|"starts and supervises"| node_frontend
node_cli -->|"dispatches governance"| node_governance
node_cli -.->|"bootstraps stack"| node_orchestrator

click node_frontend "https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_frontend/src/main.rs"
click node_routes "https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_frontend/src/routes.rs"
click node_rendering "https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_frontend/src/rendering.rs"
click node_islands "https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_client/src/components.rs"
click node_client "https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_client/src/lib.rs"
click node_router "https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_client/src/router.rs"
click node_core "https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_core/src/lib.rs"
click node_config "https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_core/src/config.rs"
click node_http "https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_core/src/service.rs"
click node_macros "https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_macros/src/lib.rs"
click node_protocol_client "https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_frontend/src/protocol_client.rs"
click node_auth "https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_auth/src/main.rs"
click node_users "https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_users/src/main.rs"
click node_user_adapters "https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_users/src/adapters/mod.rs"
click node_user_domain "https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_users/src/domain/service.rs"
click node_user_db "https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_users/src/db/mod.rs"
click node_contracts "https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_core/src/service_contract.rs"
click node_orchestrator "https://github.com/manirajkatuwal/krab-pub/blob/main/crates/tooling/krab_orchestrator/src/main.rs"
click node_cli "https://github.com/manirajkatuwal/krab-pub/blob/main/crates/tooling/krab_cli/src/main.rs"
click node_governance "https://github.com/manirajkatuwal/krab-pub/blob/main/crates/tooling/krab_cli/src/governance.rs"

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_frontend,node_routes,node_rendering,node_islands,node_client,node_router,node_browser toneBlue
class node_core,node_config,node_http,node_macros,node_postgres toneAmber
class node_protocol_client,node_auth,node_users,node_user_adapters,node_user_domain,node_user_db,node_contracts toneMint
class node_orchestrator,node_cli,node_governance toneRose
```

## Components

### Web experience

- [Frontend service](https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_frontend/src/main.rs): `services/service_frontend/src/main.rs`
- [HTTP routes](https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_frontend/src/routes.rs): `services/service_frontend/src/routes.rs`
- [Page rendering](https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_frontend/src/rendering.rs): `services/service_frontend/src/rendering.rs`
- [Island components](https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_client/src/components.rs): `crates/framework/krab_client/src/components.rs`
- [Island hydration](https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_client/src/lib.rs): `crates/framework/krab_client/src/lib.rs`
- [Client navigation](https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_client/src/router.rs): `crates/framework/krab_client/src/router.rs`

### Framework runtime

- [Core runtime](https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_core/src/lib.rs): `crates/framework/krab_core/src/lib.rs`
- [Runtime config](https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_core/src/config.rs): `crates/framework/krab_core/src/config.rs`
- [HTTP service](https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_core/src/service.rs): `crates/framework/krab_core/src/service.rs`
- [View and server macros](https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_macros/src/lib.rs): `crates/framework/krab_macros/src/lib.rs`

### Domain services

- [Protocol client](https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_frontend/src/protocol_client.rs): `services/service_frontend/src/protocol_client.rs`
- [Auth service](https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_auth/src/main.rs): `services/service_auth/src/main.rs`
- [Users service](https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_users/src/main.rs): `services/service_users/src/main.rs`
- [Users API adapters](https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_users/src/adapters/mod.rs): `services/service_users/src/adapters/mod.rs`
- [User domain](https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_users/src/domain/service.rs): `services/service_users/src/domain/service.rs`
- [User persistence](https://github.com/manirajkatuwal/krab-pub/blob/main/services/service_users/src/db/mod.rs): `services/service_users/src/db/mod.rs`
- [Service contracts](https://github.com/manirajkatuwal/krab-pub/blob/main/crates/framework/krab_core/src/service_contract.rs): `crates/framework/krab_core/src/service_contract.rs`

### Operations

- [Service orchestrator](https://github.com/manirajkatuwal/krab-pub/blob/main/crates/tooling/krab_orchestrator/src/main.rs): `crates/tooling/krab_orchestrator/src/main.rs`
- [Krab CLI](https://github.com/manirajkatuwal/krab-pub/blob/main/crates/tooling/krab_cli/src/main.rs): `crates/tooling/krab_cli/src/main.rs`
- [Operational governance](https://github.com/manirajkatuwal/krab-pub/blob/main/crates/tooling/krab_cli/src/governance.rs): `crates/tooling/krab_cli/src/governance.rs`

### Other components

- **Browser user**
- **PostgreSQL**

## Connections

- Browser user → Frontend service: requests pages
- Frontend service → Runtime config: loads configuration
- Frontend service → HTTP service: serves routes
- Frontend service → HTTP routes: registers routes
- HTTP routes → Page rendering: renders pages
- Page rendering → Browser user: returns HTML
- Page rendering → Island components: renders components
- Browser user → Island hydration: loads WASM
- Island hydration → Client navigation: starts navigation
- Client navigation → Frontend service: fetches pages
- Frontend service → Protocol client: calls domain APIs
- Protocol client → Service contracts: uses service contracts
- Protocol client → Users service: requests user operations
- Auth service → HTTP service: serves HTTP
- Users service → Users API adapters: exposes APIs
- Users API adapters → User domain: dispatches operations
- User domain → User persistence: reads users
- User persistence → PostgreSQL: persists data
- Service orchestrator → Auth service: starts and supervises
- Service orchestrator → Users service: starts and supervises
- Service orchestrator → Frontend service: starts and supervises
- Krab CLI → Operational governance: dispatches governance
- Krab CLI → Service orchestrator: bootstraps stack
