# ayushkumar418/quotaorbit architecture

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

## Overview

QuotaOrbit is an offline desktop tracker for manually recording Antigravity account quotas and choosing a ready account. The workflow runs from dashboard or tray actions through Tauri commands, domain rules, and SQLite persistence; refreshed snapshots drive account status, recommendations, and renewal views. Separate capabilities include usage analytics, backups, notifications, global shortcuts, and tray controls. The README documents these features, but their unsampled implementations are represented only at supported enclosing paths; links are omitted where wiring cannot be established from the excerpts.

Main entry points: [`frontend/src/App.tsx`](https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/App.tsx) (Dashboard), [`src-tauri/src/dashboard.rs`](https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/dashboard.rs) (Snapshot builder), [`crates/persistence/src/repository.rs`](https://github.com/ayushkumar418/quotaorbit/blob/main/crates/persistence/src/repository.rs) (Repository), [`src-tauri/src/notifications/mod.rs`](https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/notifications/mod.rs) (Renewal monitoring)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Dashboard UI"]
  node_app["Dashboard<br/>[App.tsx]"]
  node_dashboard_state["Snapshot state<br/>[useDashboard.ts]"]
  node_ui_views["Account and renewal views<br/>[AccountGrid.tsx]"]
  node_recommendation_ui["Recommendation controls"]
  node_analytics_ui["Analytics drawer"]
  node_settings_ui["Settings and backup<br/>[SettingsDrawer.tsx]"]
  node_tauri_api["Tauri API client<br/>[tauri.ts]"]
end

subgraph group_backend["Desktop Backend"]
  node_commands["Command handlers<br/>[mod.rs]"]
  node_account_commands["Account commands<br/>[accounts.rs]"]
  node_quota_commands["Quota commands<br/>[quota.rs]"]
  node_dashboard_commands["Dashboard commands<br/>[dashboard.rs]"]
  node_dashboard_builder["Snapshot builder<br/>[dashboard.rs]"]
  node_state["App state<br/>[state.rs]"]
end

subgraph group_domain["Quota Domain"]
  node_domain_models["Account and quota models<br/>[models.rs]"]
  node_quota_rules["Quota status rules<br/>[state_machine.rs]"]
  node_recommendation["Candidate ranking<br/>[recommendation.rs]"]
  node_events["Quota event operations<br/>[events.rs]"]
end

subgraph group_storage["Local Persistence"]
  node_database[("SQLite database<br/>[db.rs]")]
  node_repository["Repository<br/>[repository.rs]"]
end

subgraph group_integrations["Desktop Features"]
  node_tray["System tray<br/>[mod.rs]"]
  node_shortcuts["Global shortcuts<br/>[shortcuts.rs]"]
  node_notifications["Renewal monitoring<br/>[mod.rs]"]
  node_backup["Backup service<br/>[backup.rs]"]
end

node_user(("Power user"))
node_os_notifications["OS notifications"]

node_user -->|"uses"| node_app
node_app -->|"starts polling"| node_dashboard_state
node_app -->|"renders"| node_ui_views
node_app -->|"renders"| node_recommendation_ui
node_app -->|"opens"| node_analytics_ui
node_app -->|"opens"| node_settings_ui
node_dashboard_state -->|"requests snapshot"| node_tauri_api
node_ui_views -->|"sends actions"| node_app
node_recommendation_ui -->|"selects candidate"| node_app
node_settings_ui -->|"requests settings"| node_tauri_api
node_analytics_ui -->|"requests history"| node_tauri_api
node_tauri_api -->|"invokes"| node_commands
node_commands -->|"dispatches"| node_account_commands
node_commands -->|"dispatches"| node_quota_commands
node_commands -->|"dispatches"| node_dashboard_commands
node_account_commands -->|"reads and writes"| node_repository
node_quota_commands -->|"applies quota action"| node_events
node_quota_commands -->|"persists event"| node_repository
node_dashboard_commands -->|"builds snapshot"| node_dashboard_builder
node_dashboard_builder -->|"loads account data"| node_repository
node_dashboard_builder -->|"computes status"| node_quota_rules
node_dashboard_builder -->|"ranks candidates"| node_recommendation
node_repository -->|"reads and writes"| node_database
node_state -->|"holds connection"| node_database
node_events -->|"updates"| node_domain_models
node_quota_rules -->|"evaluates"| node_domain_models
node_recommendation -->|"uses readiness"| node_quota_rules
node_tray -->|"reads snapshot"| node_dashboard_builder
node_tray -->|"emits navigation"| node_app
node_shortcuts -->|"emits navigation"| node_app
node_notifications -->|"loads account state"| node_repository
node_notifications -->|"checks renewals"| node_quota_rules
node_notifications -->|"checks candidates"| node_recommendation
node_notifications -->|"shows alerts"| node_os_notifications
node_dashboard_commands -->|"exports and restores"| node_backup
node_tray -->|"backs up on exit"| node_backup

click node_app "https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/App.tsx"
click node_dashboard_state "https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/state/useDashboard.ts"
click node_ui_views "https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/components/AccountGrid.tsx"
click node_recommendation_ui "https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/components/RecommendationPanel.tsx"
click node_analytics_ui "https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/components/AnalyticsDrawer.tsx"
click node_settings_ui "https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/components/SettingsDrawer.tsx"
click node_tauri_api "https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/lib/tauri.ts"
click node_commands "https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/commands/mod.rs"
click node_account_commands "https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/commands/accounts.rs"
click node_quota_commands "https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/commands/quota.rs"
click node_dashboard_commands "https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/commands/dashboard.rs"
click node_dashboard_builder "https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/dashboard.rs"
click node_state "https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/state.rs"
click node_domain_models "https://github.com/ayushkumar418/quotaorbit/blob/main/crates/domain/src/models.rs"
click node_quota_rules "https://github.com/ayushkumar418/quotaorbit/blob/main/crates/domain/src/state_machine.rs"
click node_recommendation "https://github.com/ayushkumar418/quotaorbit/blob/main/crates/domain/src/recommendation.rs"
click node_events "https://github.com/ayushkumar418/quotaorbit/blob/main/crates/domain/src/events.rs"
click node_database "https://github.com/ayushkumar418/quotaorbit/blob/main/crates/persistence/src/db.rs"
click node_repository "https://github.com/ayushkumar418/quotaorbit/blob/main/crates/persistence/src/repository.rs"
click node_tray "https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/tray/mod.rs"
click node_shortcuts "https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/shortcuts.rs"
click node_notifications "https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/notifications/mod.rs"
click node_backup "https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/backup.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_app,node_dashboard_state,node_ui_views,node_recommendation_ui,node_analytics_ui,node_settings_ui,node_tauri_api,node_user toneBlue
class node_commands,node_account_commands,node_quota_commands,node_dashboard_commands,node_dashboard_builder,node_state toneAmber
class node_domain_models,node_quota_rules,node_recommendation,node_events toneMint
class node_database,node_repository toneRose
class node_tray,node_shortcuts,node_notifications,node_backup,node_os_notifications toneIndigo
```

## Components

### Dashboard UI

- [Dashboard](https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Snapshot state](https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/state/useDashboard.ts): `frontend/src/state/useDashboard.ts`
- [Account and renewal views](https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/components/AccountGrid.tsx): `frontend/src/components/AccountGrid.tsx`
- [Recommendation controls](https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/components/RecommendationPanel.tsx): `frontend/src/components/RecommendationPanel.tsx`
- [Analytics drawer](https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/components/AnalyticsDrawer.tsx): `frontend/src/components/AnalyticsDrawer.tsx`
- [Settings and backup](https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/components/SettingsDrawer.tsx): `frontend/src/components/SettingsDrawer.tsx`
- [Tauri API client](https://github.com/ayushkumar418/quotaorbit/blob/main/frontend/src/lib/tauri.ts): `frontend/src/lib/tauri.ts`

### Desktop Backend

- [Command handlers](https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/commands/mod.rs): `src-tauri/src/commands/mod.rs`
- [Account commands](https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/commands/accounts.rs): `src-tauri/src/commands/accounts.rs`
- [Quota commands](https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/commands/quota.rs): `src-tauri/src/commands/quota.rs`
- [Dashboard commands](https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/commands/dashboard.rs): `src-tauri/src/commands/dashboard.rs`
- [Snapshot builder](https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/dashboard.rs): `src-tauri/src/dashboard.rs`
- [App state](https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/state.rs): `src-tauri/src/state.rs`

### Quota Domain

- [Account and quota models](https://github.com/ayushkumar418/quotaorbit/blob/main/crates/domain/src/models.rs): `crates/domain/src/models.rs`
- [Quota status rules](https://github.com/ayushkumar418/quotaorbit/blob/main/crates/domain/src/state_machine.rs): `crates/domain/src/state_machine.rs`
- [Candidate ranking](https://github.com/ayushkumar418/quotaorbit/blob/main/crates/domain/src/recommendation.rs): `crates/domain/src/recommendation.rs`
- [Quota event operations](https://github.com/ayushkumar418/quotaorbit/blob/main/crates/domain/src/events.rs): `crates/domain/src/events.rs`

### Local Persistence

- [SQLite database](https://github.com/ayushkumar418/quotaorbit/blob/main/crates/persistence/src/db.rs): `crates/persistence/src/db.rs`
- [Repository](https://github.com/ayushkumar418/quotaorbit/blob/main/crates/persistence/src/repository.rs): `crates/persistence/src/repository.rs`

### Desktop Features

- [System tray](https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/tray/mod.rs): `src-tauri/src/tray/mod.rs`
- [Global shortcuts](https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/shortcuts.rs): `src-tauri/src/shortcuts.rs`
- [Renewal monitoring](https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/notifications/mod.rs): `src-tauri/src/notifications/mod.rs`
- [Backup service](https://github.com/ayushkumar418/quotaorbit/blob/main/src-tauri/src/backup.rs): `src-tauri/src/backup.rs`

### Other components

- **Power user**
- **OS notifications**

## Connections

- Power user → Dashboard: uses
- Dashboard → Snapshot state: starts polling
- Dashboard → Account and renewal views: renders
- Dashboard → Recommendation controls: renders
- Dashboard → Analytics drawer: opens
- Dashboard → Settings and backup: opens
- Snapshot state → Tauri API client: requests snapshot
- Account and renewal views → Dashboard: sends actions
- Recommendation controls → Dashboard: selects candidate
- Settings and backup → Tauri API client: requests settings
- Analytics drawer → Tauri API client: requests history
- Tauri API client → Command handlers: invokes
- Command handlers → Account commands: dispatches
- Command handlers → Quota commands: dispatches
- Command handlers → Dashboard commands: dispatches
- Account commands → Repository: reads and writes
- Quota commands → Quota event operations: applies quota action
- Quota commands → Repository: persists event
- Dashboard commands → Snapshot builder: builds snapshot
- Snapshot builder → Repository: loads account data
- Snapshot builder → Quota status rules: computes status
- Snapshot builder → Candidate ranking: ranks candidates
- Repository → SQLite database: reads and writes
- App state → SQLite database: holds connection
- Quota event operations → Account and quota models: updates
- Quota status rules → Account and quota models: evaluates
- Candidate ranking → Quota status rules: uses readiness
- System tray → Snapshot builder: reads snapshot
- System tray → Dashboard: emits navigation
- Global shortcuts → Dashboard: emits navigation
- Renewal monitoring → Repository: loads account state
- Renewal monitoring → Quota status rules: checks renewals
- Renewal monitoring → Candidate ranking: checks candidates
- Renewal monitoring → OS notifications: shows alerts
- Dashboard commands → Backup service: exports and restores
- System tray → Backup service: backs up on exit
