# hylmithecoder/private-wiki architecture

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

## Overview

This is a private wiki with a Next.js dashboard and a Rust service that serves its HTTP API and MCP interface. The main browser workflow is to browse or search wiki pages, open a page, and—after login—edit it; the dashboard also exposes history, tags, recent changes, graph navigation, and print/export views. The Rust service owns request routing, write authorization, and wiki operations. Sampled source confirms startup, session handling, and some client API usage; unsampled feature wiring is shown only at the directory level.

Main entry points: [`src/components/Shell.tsx`](https://github.com/hylmithecoder/private-wiki/blob/main/src/components/Shell.tsx) (App shell), [`src/lib/api.ts`](https://github.com/hylmithecoder/private-wiki/blob/main/src/lib/api.ts) (API client), [`service/src/main.rs`](https://github.com/hylmithecoder/private-wiki/blob/main/service/src/main.rs) (Service startup), [`service/src/http.rs`](https://github.com/hylmithecoder/private-wiki/blob/main/service/src/http.rs) (HTTP router)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Wiki dashboard"]
  node_dashboard["Dashboard routes"]
  node_shell["App shell<br/>[Shell.tsx]"]
  node_api_client["API client<br/>[api.ts]"]
  node_session["Session state<br/>[session.ts]"]
end

subgraph group_features["Wiki features"]
  node_browse["Browse pages<br/>[WikiView.tsx]"]
  node_search["Search pages<br/>[SearchView.tsx]"]
  node_editing["Edit pages<br/>[EditView.tsx]"]
  node_history["History and diffs<br/>[HistoryView.tsx]"]
  node_discovery["Tags and recent"]
  node_graph_view["Wiki graph<br/>[GraphView.tsx]"]
  node_print_export["Print and export<br/>[LinedPrintView.tsx]"]
end

subgraph group_service["Wiki service"]
  node_http["HTTP router<br/>[http.rs]"]
  node_auth["Write authorization<br/>[auth.rs]"]
  node_wiki["Wiki operations<br/>[wiki.rs]"]
  node_database[("Wiki database<br/>[wiki.rs]")]
  node_startup["Service startup<br/>[main.rs]"]
end

subgraph group_integrations["Interfaces"]
  node_mcp["MCP tools<br/>[mcp.rs]"]
  node_mcp_http["HTTP MCP transport<br/>[mcp_http.rs]"]
end

node_visitor(("Visitor"))
node_claude(("Claude client"))

node_visitor -->|"opens"| node_dashboard
node_dashboard -->|"renders"| node_shell
node_shell -->|"routes to"| node_browse
node_shell -->|"routes to"| node_search
node_shell -->|"routes to"| node_editing
node_shell -->|"routes to"| node_history
node_shell -->|"routes to"| node_discovery
node_shell -->|"routes to"| node_graph_view
node_shell -->|"routes to"| node_print_export
node_browse -->|"requests"| node_api_client
node_search -->|"searches via"| node_api_client
node_editing -->|"writes via"| node_api_client
node_history -->|"requests"| node_api_client
node_discovery -->|"requests"| node_api_client
node_graph_view -->|"requests"| node_api_client
node_print_export -->|"requests"| node_api_client
node_session -->|"checks session"| node_api_client
node_api_client -->|"HTTP requests"| node_http
node_startup -->|"starts"| node_http
node_startup -->|"configures"| node_auth
node_http -->|"guards writes"| node_auth
node_auth -->|"validates session"| node_wiki
node_http -->|"dispatches operations"| node_wiki
node_wiki -->|"reads and writes"| node_database
node_startup -->|"starts stdio"| node_mcp
node_startup -.->|"mounts optionally"| node_mcp_http
node_mcp_http -->|"dispatches"| node_mcp
node_mcp -->|"invokes operations"| node_wiki
node_claude -.->|"uses stdio"| node_mcp
node_claude -.->|"uses HTTP"| node_mcp_http

click node_dashboard "https://github.com/hylmithecoder/private-wiki/tree/main/src/app"
click node_shell "https://github.com/hylmithecoder/private-wiki/blob/main/src/components/Shell.tsx"
click node_api_client "https://github.com/hylmithecoder/private-wiki/blob/main/src/lib/api.ts"
click node_session "https://github.com/hylmithecoder/private-wiki/blob/main/src/lib/session.ts"
click node_browse "https://github.com/hylmithecoder/private-wiki/blob/main/src/views/WikiView.tsx"
click node_search "https://github.com/hylmithecoder/private-wiki/blob/main/src/views/SearchView.tsx"
click node_editing "https://github.com/hylmithecoder/private-wiki/blob/main/src/views/EditView.tsx"
click node_history "https://github.com/hylmithecoder/private-wiki/blob/main/src/views/HistoryView.tsx"
click node_discovery "https://github.com/hylmithecoder/private-wiki/tree/main/src/views"
click node_graph_view "https://github.com/hylmithecoder/private-wiki/blob/main/src/views/GraphView.tsx"
click node_print_export "https://github.com/hylmithecoder/private-wiki/blob/main/src/views/LinedPrintView.tsx"
click node_http "https://github.com/hylmithecoder/private-wiki/blob/main/service/src/http.rs"
click node_auth "https://github.com/hylmithecoder/private-wiki/blob/main/service/src/auth.rs"
click node_wiki "https://github.com/hylmithecoder/private-wiki/blob/main/service/src/wiki.rs"
click node_database "https://github.com/hylmithecoder/private-wiki/blob/main/service/src/wiki.rs"
click node_startup "https://github.com/hylmithecoder/private-wiki/blob/main/service/src/main.rs"
click node_mcp "https://github.com/hylmithecoder/private-wiki/blob/main/service/src/mcp.rs"
click node_mcp_http "https://github.com/hylmithecoder/private-wiki/blob/main/service/src/mcp_http.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_dashboard,node_shell,node_api_client,node_session,node_claude toneBlue
class node_browse,node_search,node_editing,node_history,node_discovery,node_graph_view,node_print_export toneAmber
class node_http,node_auth,node_wiki,node_database,node_startup toneMint
class node_mcp,node_mcp_http toneRose
class node_visitor toneIndigo
```

## Components

### Wiki dashboard

- [Dashboard routes](https://github.com/hylmithecoder/private-wiki/tree/main/src/app): `src/app`
- [App shell](https://github.com/hylmithecoder/private-wiki/blob/main/src/components/Shell.tsx): `src/components/Shell.tsx`
- [API client](https://github.com/hylmithecoder/private-wiki/blob/main/src/lib/api.ts): `src/lib/api.ts`
- [Session state](https://github.com/hylmithecoder/private-wiki/blob/main/src/lib/session.ts): `src/lib/session.ts`

### Wiki features

- [Browse pages](https://github.com/hylmithecoder/private-wiki/blob/main/src/views/WikiView.tsx): `src/views/WikiView.tsx`
- [Search pages](https://github.com/hylmithecoder/private-wiki/blob/main/src/views/SearchView.tsx): `src/views/SearchView.tsx`
- [Edit pages](https://github.com/hylmithecoder/private-wiki/blob/main/src/views/EditView.tsx): `src/views/EditView.tsx`
- [History and diffs](https://github.com/hylmithecoder/private-wiki/blob/main/src/views/HistoryView.tsx): `src/views/HistoryView.tsx`
- [Tags and recent](https://github.com/hylmithecoder/private-wiki/tree/main/src/views): `src/views`
- [Wiki graph](https://github.com/hylmithecoder/private-wiki/blob/main/src/views/GraphView.tsx): `src/views/GraphView.tsx`
- [Print and export](https://github.com/hylmithecoder/private-wiki/blob/main/src/views/LinedPrintView.tsx): `src/views/LinedPrintView.tsx`

### Wiki service

- [HTTP router](https://github.com/hylmithecoder/private-wiki/blob/main/service/src/http.rs): `service/src/http.rs`
- [Write authorization](https://github.com/hylmithecoder/private-wiki/blob/main/service/src/auth.rs): `service/src/auth.rs`
- [Wiki operations](https://github.com/hylmithecoder/private-wiki/blob/main/service/src/wiki.rs): `service/src/wiki.rs`
- [Wiki database](https://github.com/hylmithecoder/private-wiki/blob/main/service/src/wiki.rs): `service/src/wiki.rs`
- [Service startup](https://github.com/hylmithecoder/private-wiki/blob/main/service/src/main.rs): `service/src/main.rs`

### Interfaces

- [MCP tools](https://github.com/hylmithecoder/private-wiki/blob/main/service/src/mcp.rs): `service/src/mcp.rs`
- [HTTP MCP transport](https://github.com/hylmithecoder/private-wiki/blob/main/service/src/mcp_http.rs): `service/src/mcp_http.rs`

### Other components

- **Visitor**
- **Claude client**

## Connections

- Visitor → Dashboard routes: opens
- Dashboard routes → App shell: renders
- App shell → Browse pages: routes to
- App shell → Search pages: routes to
- App shell → Edit pages: routes to
- App shell → History and diffs: routes to
- App shell → Tags and recent: routes to
- App shell → Wiki graph: routes to
- App shell → Print and export: routes to
- Browse pages → API client: requests
- Search pages → API client: searches via
- Edit pages → API client: writes via
- History and diffs → API client: requests
- Tags and recent → API client: requests
- Wiki graph → API client: requests
- Print and export → API client: requests
- Session state → API client: checks session
- API client → HTTP router: HTTP requests
- Service startup → HTTP router: starts
- Service startup → Write authorization: configures
- HTTP router → Write authorization: guards writes
- Write authorization → Wiki operations: validates session
- HTTP router → Wiki operations: dispatches operations
- Wiki operations → Wiki database: reads and writes
- Service startup → MCP tools: starts stdio
- Service startup → HTTP MCP transport: mounts optionally
- HTTP MCP transport → MCP tools: dispatches
- MCP tools → Wiki operations: invokes operations
- Claude client → MCP tools: uses stdio
- Claude client → HTTP MCP transport: uses HTTP
