# soofibd/personal-dashboard architecture

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

- Interactive diagram: https://gitdiagram.com/soofibd/personal-dashboard
- Repository: https://github.com/soofibd/personal-dashboard

## Overview

Personal Dashboard is a self-hosted Rails workspace whose main workflow is a signed-in user entering the hub and using finance, notes, learning, training, or AI capabilities. Finance handles accounts, transactions, budgets, and analysis; notes provide Markdown search and links; learning and gym track plans and activity. AI grounds proposals in user-scoped workspace data and requires approval for changes. ChartDB is a separate browser-based schema editor, while PDF extraction runs through a private worker. Some domain links are documented in the README; unsampled implementation details are not inferred.

Main entry points: [`app/controllers/home_controller.rb`](https://github.com/soofibd/personal-dashboard/blob/main/app/controllers/home_controller.rb) (Workspace hub), [`app/tools/finance_tool.rb`](https://github.com/soofibd/personal-dashboard/blob/main/app/tools/finance_tool.rb) (Workspace data tools), [`modules/chartdb/src/pages/editor-page/editor-page.tsx`](https://github.com/soofibd/personal-dashboard/blob/main/modules/chartdb/src/pages/editor-page/editor-page.tsx) (Schema editor), [`notes_module/app/controllers/notes/notes_controller.rb`](https://github.com/soofibd/personal-dashboard/blob/main/notes_module/app/controllers/notes/notes_controller.rb) (Notes workspace)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_host["Workspace and access"]
  node_hub["Workspace hub<br/>[home_controller.rb]"]
  node_auth["Authentication and roles"]
end

subgraph group_domains["Personal workspace"]
  node_finance["Finance management"]
  node_finance_models[("Finance records")]
  node_notes["Notes workspace"]
  node_note_records[("Notes and links<br/>[note.rb]")]
  node_markdown_editor["Markdown editor<br/>[WorkspaceApp.tsx]"]
  node_learning["Learning tracker"]
  node_gym["Training tracker"]
end

subgraph group_assistant["AI workflows"]
  node_ai_chat["AI conversations"]
  node_ai_service["Assistant orchestration"]
  node_workspace_tools["Workspace data tools<br/>[finance_tool.rb]"]
  node_action_review["Action review and execution"]
  node_ai_records[("AI conversations and actions<br/>[ai_action.rb]")]
end

subgraph group_documents["Document processing"]
  node_pdf_upload["PDF conversion workflow"]
  node_pdf_client["PDF worker client"]
  node_pdf_worker["Private PDF worker<br/>[app.py]"]
end

subgraph group_schema["Database design"]
  node_chartdb["Schema editor<br/>[editor-page.tsx]"]
  node_chartdb_storage[("Browser diagram storage")]
  node_sql_import["SQL and DBML import"]
  node_sql_export["Diagram export"]
end

node_user(("Signed-in user"))

node_user -->|"signs in"| node_auth
node_auth -->|"opens workspace"| node_hub
node_hub -->|"opens module"| node_finance
node_hub -->|"opens module"| node_notes
node_hub -->|"opens module"| node_learning
node_hub -->|"opens module"| node_gym
node_finance -->|"manages records"| node_finance_models
node_notes -->|"stores notes"| node_note_records
node_markdown_editor -->|"edits Markdown"| node_notes
node_hub -->|"opens assistant"| node_ai_chat
node_ai_chat -->|"requests assistance"| node_ai_service
node_ai_service -->|"uses scoped data"| node_workspace_tools
node_workspace_tools -->|"reads finance context"| node_finance
node_workspace_tools -->|"reads notes context"| node_notes
node_workspace_tools -->|"reads learning context"| node_learning
node_workspace_tools -->|"reads training context"| node_gym
node_ai_service -->|"proposes changes"| node_action_review
node_action_review -->|"stores pending actions"| node_ai_records
node_user -->|"reviews proposal"| node_action_review
node_pdf_upload -->|"requests conversion"| node_pdf_client
node_pdf_client -->|"sends private PDF"| node_pdf_worker
node_hub -->|"opens editor"| node_chartdb
node_chartdb -->|"imports schema"| node_sql_import
node_chartdb -->|"stores diagrams"| node_chartdb_storage
node_chartdb -->|"exports SQL"| node_sql_export

click node_hub "https://github.com/soofibd/personal-dashboard/blob/main/app/controllers/home_controller.rb"
click node_auth "https://github.com/soofibd/personal-dashboard/blob/main/app/controllers/sessions_controller.rb"
click node_finance "https://github.com/soofibd/personal-dashboard/tree/main/finance_module/app/controllers/personal_finance"
click node_finance_models "https://github.com/soofibd/personal-dashboard/tree/main/finance_module/app/models/personal_finance"
click node_notes "https://github.com/soofibd/personal-dashboard/blob/main/notes_module/app/controllers/notes/notes_controller.rb"
click node_note_records "https://github.com/soofibd/personal-dashboard/blob/main/notes_module/app/models/notes/note.rb"
click node_markdown_editor "https://github.com/soofibd/personal-dashboard/blob/main/frontend/md-editor/src/editor/WorkspaceApp.tsx"
click node_learning "https://github.com/soofibd/personal-dashboard/blob/main/learning_module/app/controllers/learning/workspace_controller.rb"
click node_gym "https://github.com/soofibd/personal-dashboard/tree/main/gym_module/app/controllers/personal_gym"
click node_ai_chat "https://github.com/soofibd/personal-dashboard/blob/main/app/controllers/ai_chats_controller.rb"
click node_ai_service "https://github.com/soofibd/personal-dashboard/blob/main/app/services/ai_assistant_service.rb"
click node_workspace_tools "https://github.com/soofibd/personal-dashboard/blob/main/app/tools/finance_tool.rb"
click node_action_review "https://github.com/soofibd/personal-dashboard/blob/main/app/controllers/ai_actions_controller.rb"
click node_ai_records "https://github.com/soofibd/personal-dashboard/blob/main/app/models/ai_action.rb"
click node_pdf_upload "https://github.com/soofibd/personal-dashboard/blob/main/finance_module/app/controllers/personal_finance/document_conversions_controller.rb"
click node_pdf_client "https://github.com/soofibd/personal-dashboard/blob/main/app/services/pdf_conversion_client.rb"
click node_pdf_worker "https://github.com/soofibd/personal-dashboard/blob/main/pdf_worker/app.py"
click node_chartdb "https://github.com/soofibd/personal-dashboard/blob/main/modules/chartdb/src/pages/editor-page/editor-page.tsx"
click node_chartdb_storage "https://github.com/soofibd/personal-dashboard/blob/main/modules/chartdb/src/context/storage-context/storage-provider.tsx"
click node_sql_import "https://github.com/soofibd/personal-dashboard/blob/main/modules/chartdb/src/dialogs/common/import-database/import-database.tsx"
click node_sql_export "https://github.com/soofibd/personal-dashboard/blob/main/modules/chartdb/src/dialogs/export-sql-dialog/export-sql-dialog.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_hub,node_auth,node_user toneBlue
class node_finance,node_finance_models,node_notes,node_note_records,node_markdown_editor,node_learning,node_gym toneAmber
class node_ai_chat,node_ai_service,node_workspace_tools,node_action_review,node_ai_records toneMint
class node_pdf_upload,node_pdf_client,node_pdf_worker toneRose
class node_chartdb,node_chartdb_storage,node_sql_import,node_sql_export toneIndigo
```

## Components

### Workspace and access

- [Workspace hub](https://github.com/soofibd/personal-dashboard/blob/main/app/controllers/home_controller.rb): `app/controllers/home_controller.rb`
- [Authentication and roles](https://github.com/soofibd/personal-dashboard/blob/main/app/controllers/sessions_controller.rb): `app/controllers/sessions_controller.rb`

### Personal workspace

- [Finance management](https://github.com/soofibd/personal-dashboard/tree/main/finance_module/app/controllers/personal_finance): `finance_module/app/controllers/personal_finance`
- [Finance records](https://github.com/soofibd/personal-dashboard/tree/main/finance_module/app/models/personal_finance): `finance_module/app/models/personal_finance`
- [Notes workspace](https://github.com/soofibd/personal-dashboard/blob/main/notes_module/app/controllers/notes/notes_controller.rb): `notes_module/app/controllers/notes/notes_controller.rb`
- [Notes and links](https://github.com/soofibd/personal-dashboard/blob/main/notes_module/app/models/notes/note.rb): `notes_module/app/models/notes/note.rb`
- [Markdown editor](https://github.com/soofibd/personal-dashboard/blob/main/frontend/md-editor/src/editor/WorkspaceApp.tsx): `frontend/md-editor/src/editor/WorkspaceApp.tsx`
- [Learning tracker](https://github.com/soofibd/personal-dashboard/blob/main/learning_module/app/controllers/learning/workspace_controller.rb): `learning_module/app/controllers/learning/workspace_controller.rb`
- [Training tracker](https://github.com/soofibd/personal-dashboard/tree/main/gym_module/app/controllers/personal_gym): `gym_module/app/controllers/personal_gym`

### AI workflows

- [AI conversations](https://github.com/soofibd/personal-dashboard/blob/main/app/controllers/ai_chats_controller.rb): `app/controllers/ai_chats_controller.rb`
- [Assistant orchestration](https://github.com/soofibd/personal-dashboard/blob/main/app/services/ai_assistant_service.rb): `app/services/ai_assistant_service.rb`
- [Workspace data tools](https://github.com/soofibd/personal-dashboard/blob/main/app/tools/finance_tool.rb): `app/tools/finance_tool.rb`
- [Action review and execution](https://github.com/soofibd/personal-dashboard/blob/main/app/controllers/ai_actions_controller.rb): `app/controllers/ai_actions_controller.rb`
- [AI conversations and actions](https://github.com/soofibd/personal-dashboard/blob/main/app/models/ai_action.rb): `app/models/ai_action.rb`

### Document processing

- [PDF conversion workflow](https://github.com/soofibd/personal-dashboard/blob/main/finance_module/app/controllers/personal_finance/document_conversions_controller.rb): `finance_module/app/controllers/personal_finance/document_conversions_controller.rb`
- [PDF worker client](https://github.com/soofibd/personal-dashboard/blob/main/app/services/pdf_conversion_client.rb): `app/services/pdf_conversion_client.rb`
- [Private PDF worker](https://github.com/soofibd/personal-dashboard/blob/main/pdf_worker/app.py): `pdf_worker/app.py`

### Database design

- [Schema editor](https://github.com/soofibd/personal-dashboard/blob/main/modules/chartdb/src/pages/editor-page/editor-page.tsx): `modules/chartdb/src/pages/editor-page/editor-page.tsx`
- [Browser diagram storage](https://github.com/soofibd/personal-dashboard/blob/main/modules/chartdb/src/context/storage-context/storage-provider.tsx): `modules/chartdb/src/context/storage-context/storage-provider.tsx`
- [SQL and DBML import](https://github.com/soofibd/personal-dashboard/blob/main/modules/chartdb/src/dialogs/common/import-database/import-database.tsx): `modules/chartdb/src/dialogs/common/import-database/import-database.tsx`
- [Diagram export](https://github.com/soofibd/personal-dashboard/blob/main/modules/chartdb/src/dialogs/export-sql-dialog/export-sql-dialog.tsx): `modules/chartdb/src/dialogs/export-sql-dialog/export-sql-dialog.tsx`

### Other components

- **Signed-in user**

## Connections

- Signed-in user → Authentication and roles: signs in
- Authentication and roles → Workspace hub: opens workspace
- Workspace hub → Finance management: opens module
- Workspace hub → Notes workspace: opens module
- Workspace hub → Learning tracker: opens module
- Workspace hub → Training tracker: opens module
- Finance management → Finance records: manages records
- Notes workspace → Notes and links: stores notes
- Markdown editor → Notes workspace: edits Markdown
- Workspace hub → AI conversations: opens assistant
- AI conversations → Assistant orchestration: requests assistance (evidence: `app/services/ai_assistant_service.rb`)
- Assistant orchestration → Workspace data tools: uses scoped data
- Workspace data tools → Finance management: reads finance context
- Workspace data tools → Notes workspace: reads notes context
- Workspace data tools → Learning tracker: reads learning context
- Workspace data tools → Training tracker: reads training context
- Assistant orchestration → Action review and execution: proposes changes
- Action review and execution → AI conversations and actions: stores pending actions
- Signed-in user → Action review and execution: reviews proposal
- PDF conversion workflow → PDF worker client: requests conversion
- PDF worker client → Private PDF worker: sends private PDF
- Workspace hub → Schema editor: opens editor
- Schema editor → SQL and DBML import: imports schema (evidence: `modules/chartdb/src/dialogs/common/import-database/import-database.tsx`)
- Schema editor → Browser diagram storage: stores diagrams (evidence: `modules/chartdb/src/context/storage-context/storage-provider.tsx`)
- Schema editor → Diagram export: exports SQL
