# yantrik-collab-coding/yantrik architecture

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

- Interactive diagram: https://gitdiagram.com/yantrik-collab-coding/yantrik
- Repository: https://github.com/yantrik-collab-coding/yantrik

## Overview

Yantrik is a desktop collaborative AI-coding product: users authenticate, open a shared project workspace, chat with teammates or an AI agent, and review code changes. The backend serves project, chat, file, and community APIs; the desktop shell adds local file synchronization. The graph preserves documented forum, hackathon, billing, and profile capabilities. Several route implementations and UI pages were not sampled, so their internal connections are omitted where the available evidence does not establish them.

Main entry points: [`backend/main.py`](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/main.py) (API application), [`frontend/src/pages/ProjectPage.tsx`](https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/pages/ProjectPage.tsx) (Project workspace UI), [`frontend/src/App.tsx`](https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/App.tsx) (App routing), [`backend/core/llm.py`](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/core/llm.py) (LLM routing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Desktop and UI"]
  node_app["App routing<br/>[App.tsx]"]
  node_auth_ui["Sign-in UI<br/>[AuthPage.tsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.tsx]"]
  node_electron["Desktop shell<br/>[main.js]"]
  node_file_sync["Local file sync<br/>[file-sync.js]"]
end

subgraph group_workspace["Coding workspace"]
  node_project_ui["Project workspace UI<br/>[ProjectPage.tsx]"]
  node_chat_ui["Chat panel<br/>[ChatPanel.tsx]"]
  node_agent_steps["Agent steps UI<br/>[AgentSteps.tsx]"]
  node_file_tree["File tree UI<br/>[FileTree.tsx]"]
  node_diff_ui["Diff viewer<br/>[DiffViewer.tsx]"]
  node_terminal_ui["Terminal UI<br/>[Terminal.tsx]"]
  node_projects["Project API<br/>[projects.py]"]
  node_chat["Chat and agent API<br/>[chat.py]"]
  node_files["Workspace files API<br/>[files.py]"]
end

subgraph group_platform["Accounts and community"]
  node_auth_routes["Authentication API<br/>[auth.py]"]
  node_forum["Forum API<br/>[forum.py]"]
  node_friends["Friends API<br/>[friends.py]"]
  node_hackathons["Hackathon API<br/>[hackathon.py]"]
  node_billing["Billing and keys API<br/>[billing.py]"]
  node_community_ui["Forum UI<br/>[ForumPage.tsx]"]
  node_hackathon_ui["Hackathon pages<br/>[HackathonPage.tsx]"]
  node_profile_ui["Profile page<br/>[ProfilePage.tsx]"]
end

subgraph group_runtime["Backend runtime"]
  node_api["API application<br/>[main.py]"]
  node_executor["Agent executor<br/>[agent_executor.py]"]
  node_llm["LLM routing<br/>[llm.py]"]
  node_diff["Diff and risk analysis<br/>[diff_engine.py]"]
  node_models["Model catalog<br/>[models.py]"]
  node_database[("SQLite data<br/>[database.py]")]
end

node_user(("User"))
node_ai_services{{"LLM providers"}}

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_auth_ui
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_project_ui
node_app -->|"routes to"| node_community_ui
node_app -->|"routes to"| node_hackathon_ui
node_auth_ui -->|"syncs account"| node_auth_routes
node_api -->|"mounts"| node_auth_routes
node_api -->|"mounts"| node_projects
node_api -->|"mounts"| node_chat
node_api -->|"mounts"| node_files
node_api -->|"mounts"| node_forum
node_api -->|"mounts"| node_friends
node_api -->|"mounts"| node_hackathons
node_api -->|"mounts"| node_billing
node_project_ui -->|"requests project"| node_projects
node_project_ui -->|"requests models"| node_files
node_project_ui -->|"renders"| node_chat_ui
node_project_ui -->|"renders"| node_file_tree
node_project_ui -->|"renders"| node_diff_ui
node_project_ui -->|"renders"| node_terminal_ui
node_chat_ui -->|"renders"| node_agent_steps
node_chat -->|"executes plan"| node_executor
node_executor -->|"calls"| node_llm
node_executor -->|"generates diff"| node_diff
node_llm -->|"reads API keys"| node_database
node_llm -->|"resolves provider"| node_models
node_llm -->|"calls provider"| node_ai_services
node_chat -->|"stores messages and jobs"| node_database
node_files -->|"stores files and versions"| node_database
node_auth_routes -->|"reads and writes users"| node_database
node_electron -->|"imports sync"| node_file_sync
node_community_ui -.->|"uses API"| node_forum
node_hackathon_ui -.->|"uses API"| node_hackathons
node_profile_ui -.->|"manages keys"| node_billing

click node_app "https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/App.tsx"
click node_auth_ui "https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/pages/AuthPage.tsx"
click node_dashboard "https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/pages/Dashboard.tsx"
click node_project_ui "https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/pages/ProjectPage.tsx"
click node_chat_ui "https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/components/ChatPanel.tsx"
click node_agent_steps "https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/components/AgentSteps.tsx"
click node_file_tree "https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/components/FileTree.tsx"
click node_diff_ui "https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/components/DiffViewer.tsx"
click node_terminal_ui "https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/components/Terminal.tsx"
click node_electron "https://github.com/yantrik-collab-coding/yantrik/blob/main/electron/main.js"
click node_file_sync "https://github.com/yantrik-collab-coding/yantrik/blob/main/electron/file-sync.js"
click node_api "https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/main.py"
click node_auth_routes "https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/auth.py"
click node_projects "https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/projects.py"
click node_chat "https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/chat.py"
click node_files "https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/files.py"
click node_executor "https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/core/agent_executor.py"
click node_llm "https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/core/llm.py"
click node_diff "https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/core/diff_engine.py"
click node_models "https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/core/models.py"
click node_database "https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/core/database.py"
click node_forum "https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/forum.py"
click node_friends "https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/friends.py"
click node_hackathons "https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/hackathon.py"
click node_billing "https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/billing.py"
click node_community_ui "https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/pages/ForumPage.tsx"
click node_hackathon_ui "https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/pages/HackathonPage.tsx"
click node_profile_ui "https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/pages/ProfilePage.tsx"

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_app,node_auth_ui,node_dashboard,node_electron,node_file_sync,node_user toneBlue
class node_project_ui,node_chat_ui,node_agent_steps,node_file_tree,node_diff_ui,node_terminal_ui,node_projects,node_chat,node_files toneAmber
class node_auth_routes,node_forum,node_friends,node_hackathons,node_billing,node_community_ui,node_hackathon_ui,node_profile_ui toneMint
class node_api,node_executor,node_llm,node_diff,node_models,node_database toneRose
class node_ai_services toneIndigo
```

## Components

### Desktop and UI

- [App routing](https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Sign-in UI](https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/pages/AuthPage.tsx): `frontend/src/pages/AuthPage.tsx`
- [Dashboard](https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/pages/Dashboard.tsx): `frontend/src/pages/Dashboard.tsx`
- [Desktop shell](https://github.com/yantrik-collab-coding/yantrik/blob/main/electron/main.js): `electron/main.js`
- [Local file sync](https://github.com/yantrik-collab-coding/yantrik/blob/main/electron/file-sync.js): `electron/file-sync.js`

### Coding workspace

- [Project workspace UI](https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/pages/ProjectPage.tsx): `frontend/src/pages/ProjectPage.tsx`
- [Chat panel](https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/components/ChatPanel.tsx): `frontend/src/components/ChatPanel.tsx`
- [Agent steps UI](https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/components/AgentSteps.tsx): `frontend/src/components/AgentSteps.tsx`
- [File tree UI](https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/components/FileTree.tsx): `frontend/src/components/FileTree.tsx`
- [Diff viewer](https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/components/DiffViewer.tsx): `frontend/src/components/DiffViewer.tsx`
- [Terminal UI](https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/components/Terminal.tsx): `frontend/src/components/Terminal.tsx`
- [Project API](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/projects.py): `backend/routers/projects.py`
- [Chat and agent API](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/chat.py): `backend/routers/chat.py`
- [Workspace files API](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/files.py): `backend/routers/files.py`

### Accounts and community

- [Authentication API](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/auth.py): `backend/routers/auth.py`
- [Forum API](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/forum.py): `backend/routers/forum.py`
- [Friends API](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/friends.py): `backend/routers/friends.py`
- [Hackathon API](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/hackathon.py): `backend/routers/hackathon.py`
- [Billing and keys API](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/routers/billing.py): `backend/routers/billing.py`
- [Forum UI](https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/pages/ForumPage.tsx): `frontend/src/pages/ForumPage.tsx`
- [Hackathon pages](https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/pages/HackathonPage.tsx): `frontend/src/pages/HackathonPage.tsx`
- [Profile page](https://github.com/yantrik-collab-coding/yantrik/blob/main/frontend/src/pages/ProfilePage.tsx): `frontend/src/pages/ProfilePage.tsx`

### Backend runtime

- [API application](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/main.py): `backend/main.py`
- [Agent executor](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/core/agent_executor.py): `backend/core/agent_executor.py`
- [LLM routing](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/core/llm.py): `backend/core/llm.py`
- [Diff and risk analysis](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/core/diff_engine.py): `backend/core/diff_engine.py`
- [Model catalog](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/core/models.py): `backend/core/models.py`
- [SQLite data](https://github.com/yantrik-collab-coding/yantrik/blob/main/backend/core/database.py): `backend/core/database.py`

### Other components

- **User**
- **LLM providers**

## Connections

- User → App routing: uses (evidence: `frontend/src/App.tsx`)
- App routing → Sign-in UI: routes to (evidence: `frontend/src/App.tsx`)
- App routing → Dashboard: routes to (evidence: `frontend/src/App.tsx`)
- App routing → Project workspace UI: routes to (evidence: `frontend/src/App.tsx`)
- App routing → Forum UI: routes to (evidence: `frontend/src/App.tsx`)
- App routing → Hackathon pages: routes to (evidence: `frontend/src/App.tsx`)
- Sign-in UI → Authentication API: syncs account (evidence: `frontend/src/pages/AuthPage.tsx`)
- API application → Authentication API: mounts (evidence: `backend/main.py`)
- API application → Project API: mounts (evidence: `backend/main.py`)
- API application → Chat and agent API: mounts (evidence: `backend/main.py`)
- API application → Workspace files API: mounts (evidence: `backend/main.py`)
- API application → Forum API: mounts (evidence: `backend/main.py`)
- API application → Friends API: mounts (evidence: `backend/main.py`)
- API application → Hackathon API: mounts (evidence: `backend/main.py`)
- API application → Billing and keys API: mounts (evidence: `backend/main.py`)
- Project workspace UI → Project API: requests project (evidence: `frontend/src/pages/ProjectPage.tsx`)
- Project workspace UI → Workspace files API: requests models (evidence: `frontend/src/pages/ProjectPage.tsx`)
- Project workspace UI → Chat panel: renders (evidence: `frontend/src/pages/ProjectPage.tsx`)
- Project workspace UI → File tree UI: renders (evidence: `frontend/src/pages/ProjectPage.tsx`)
- Project workspace UI → Diff viewer: renders (evidence: `frontend/src/pages/ProjectPage.tsx`)
- Project workspace UI → Terminal UI: renders (evidence: `frontend/src/pages/ProjectPage.tsx`)
- Chat panel → Agent steps UI: renders (evidence: `frontend/src/components/ChatPanel.tsx`)
- Chat and agent API → Agent executor: executes plan (evidence: `backend/routers/chat.py`)
- Agent executor → LLM routing: calls (evidence: `backend/core/agent_executor.py`)
- Agent executor → Diff and risk analysis: generates diff (evidence: `backend/core/agent_executor.py`)
- LLM routing → SQLite data: reads API keys (evidence: `backend/core/llm.py`)
- LLM routing → Model catalog: resolves provider (evidence: `backend/core/llm.py`)
- LLM routing → LLM providers: calls provider (evidence: `backend/core/llm.py`)
- Chat and agent API → SQLite data: stores messages and jobs (evidence: `backend/routers/chat.py`)
- Workspace files API → SQLite data: stores files and versions (evidence: `backend/routers/files.py`)
- Authentication API → SQLite data: reads and writes users (evidence: `backend/routers/auth.py`)
- Desktop shell → Local file sync: imports sync (evidence: `electron/main.js`)
- Forum UI → Forum API: uses API
- Hackathon pages → Hackathon API: uses API
- Profile page → Billing and keys API: manages keys
