Files
GitLite/docs/architecture/gitty-runtime.json
T
Christoph f0ff1914c9 docs(architecture): add generated runtime diagram and receipts
Add the generated Gitty runtime architecture documentation produced by archify: rendered HTML, JSON specification and delivery/browser receipts, visual-check screenshots and contact sheets, and accompanying diagram JSON/visual files under docs/diagrams. These are auto-generated static documentation artifacts (archify metadata present) and should not be edited by hand.
2026-09-16 22:01:27 +02:00

354 lines
7.0 KiB
JSON

{
"schema_version": 1,
"diagram_type": "architecture",
"meta": {
"title": "Gitty runtime architecture",
"locale": "en",
"quality_profile": "showcase",
"repository": {
"url": "https://git.cbsk-tech.de/Christoph/GitLite.git",
"revision": "47b8544ba889a1357f6578469d2163bbd438ab00",
"link_mode": "local-only"
}
},
"components": [
{
"id": "workspace",
"type": "frontend",
"label": "Workspace UI",
"sublabel": "Svelte 5 \u00b7 WebView",
"pos": [
60,
220
],
"size": [
180,
70
],
"sources": [
{
"path": "src/App.svelte",
"line": 1
}
]
},
{
"id": "dispatch",
"type": "backend",
"label": "Tauri commands",
"sublabel": "Invoke / event bridge",
"pos": [
325,
220
],
"size": [
180,
70
],
"sources": [
{
"path": "src-tauri/src/main.rs",
"line": 334
}
]
},
{
"id": "git-service",
"type": "backend",
"label": "Git operations",
"sublabel": "Rust \u00b7 blocking tasks",
"pos": [
590,
220
],
"size": [
180,
70
],
"sources": [
{
"path": "src-tauri/src/git.rs",
"line": 577
}
]
},
{
"id": "git-process",
"type": "external",
"label": "Git + Git LFS",
"sublabel": "Native subprocesses",
"pos": [
855,
220
],
"size": [
180,
70
],
"sources": [
{
"path": "src-tauri/src/git.rs",
"line": 415
}
]
},
{
"id": "repository",
"type": "database",
"label": "Local repository",
"sublabel": "Worktree \u00b7 index \u00b7 .git",
"pos": [
1120,
220
],
"size": [
180,
70
],
"sources": [
{
"path": "src-tauri/src/git.rs",
"line": 7436
}
]
},
{
"id": "hosting-client",
"type": "backend",
"label": "Hosting adapters",
"sublabel": "Issues \u00b7 reviews \u00b7 boards",
"pos": [
325,
70
],
"size": [
180,
70
],
"sources": [
{
"path": "src-tauri/src/integrations.rs",
"line": 1
}
]
},
{
"id": "host-services",
"type": "external",
"label": "Git hosting",
"sublabel": "GitHub \u00b7 GitLab \u00b7 others",
"pos": [
60,
70
],
"size": [
180,
70
],
"sources": [
{
"path": "src-tauri/src/integrations.rs",
"line": 1
}
]
},
{
"id": "ai-client",
"type": "backend",
"label": "AI assistance",
"sublabel": "commit_ai crate",
"pos": [
590,
390
],
"size": [
180,
70
],
"sources": [
{
"path": "src-tauri/crates/commit_ai/src/lib.rs",
"line": 1
}
]
},
{
"id": "ai-endpoint",
"type": "external",
"label": "Model endpoint",
"sublabel": "OpenAI \u00b7 Anthropic \u00b7 custom",
"pos": [
855,
390
],
"size": [
180,
70
],
"sources": [
{
"path": "src-tauri/crates/commit_ai/src/cloud.rs",
"line": 1
}
]
},
{
"id": "keychain",
"type": "security",
"label": "OS keychain",
"sublabel": "Credentials / API keys",
"pos": [
60,
390
],
"size": [
180,
70
],
"sources": [
{
"path": "src-tauri/src/git.rs",
"line": 3033
}
]
}
],
"boundaries": [
{
"kind": "security-group",
"label": "WebView",
"wraps": [
"workspace"
],
"pad": 25
},
{
"kind": "security-group",
"label": "Native application process",
"wraps": [
"dispatch",
"git-service",
"hosting-client",
"ai-client"
],
"pad": 28
},
{
"kind": "region",
"label": "OS processes & filesystem",
"wraps": [
"git-process",
"repository"
],
"pad": 28
}
],
"connections": [
{
"id": "ui-invoke",
"from": "workspace",
"to": "dispatch",
"label": "IPC invoke",
"variant": "emphasis"
},
{
"id": "dispatch-git",
"from": "dispatch",
"to": "git-service",
"label": "Rust call",
"variant": "emphasis"
},
{
"id": "spawn-git",
"from": "git-service",
"to": "git-process",
"label": "spawn",
"variant": "emphasis"
},
{
"id": "git-files",
"from": "git-process",
"to": "repository",
"label": "read / write",
"variant": "emphasis"
},
{
"id": "dispatch-hosting",
"from": "dispatch",
"to": "hosting-client",
"label": "Rust call",
"variant": "default",
"fromSide": "top",
"toSide": "bottom"
},
{
"id": "hosting-api",
"from": "hosting-client",
"to": "host-services",
"label": "HTTPS API",
"variant": "default"
},
{
"id": "git-ai",
"from": "git-service",
"to": "ai-client",
"label": "diff + notes",
"variant": "default",
"fromSide": "bottom",
"toSide": "top",
"labelAt": [
680,
304
]
},
{
"id": "ai-http",
"from": "ai-client",
"to": "ai-endpoint",
"label": "HTTP(S)",
"variant": "default"
},
{
"id": "command-secrets",
"from": "dispatch",
"to": "keychain",
"label": "keyring API",
"variant": "security",
"fromSide": "bottom",
"toSide": "right",
"labelAt": [
300,
425
]
}
],
"cards": [
{
"dot": "cyan",
"title": "Primary path",
"items": [
"UI invokes registered commands; Rust runs Git off the async executor. Results return to the UI.",
"Git LFS handles large objects. Git uses HTTPS / SSH for fetch, pull, push and clone."
]
},
{
"dot": "violet",
"title": "Supporting runtime",
"items": [
"Hosting: GitHub, GitLab, Azure DevOps and Gitea; REST calls use reqwest.",
"AI: diffs / notes and API keys are passed to the selected provider through native commands.",
"Workspace preferences live in WebView localStorage."
]
},
{
"dot": "rose",
"title": "Trust & external services",
"items": [
"IPC crosses into native filesystem and process privileges; CSP is currently null.",
"OS keychain also stores hosting credentials. Network endpoints may be cloud or self-hosted.",
"Aptabase telemetry and the Windows/macOS update CDN are secondary dependencies; Linux uses package updates."
]
}
]
}