# mqdd27/idx-stocks-dashboard architecture

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

- Interactive diagram: https://gitdiagram.com/mqdd27/idx-stocks-dashboard
- Repository: https://github.com/mqdd27/idx-stocks-dashboard

## Overview

Stocks Dashboard IDX is a web and desktop workstation for IDX market research and paper-trading simulations, not a broker. Its main workflow collects market data into a local or web database, serves research and simulation features through FastAPI, and presents them in the Next.js dashboard; desktop users access a dashboard through a Tauri shell. The README documents distinct news, foreign-flow, broker-activity, screening, performance, AI, and operations capabilities. Sampled source confirms selected API, collector, AI, risk, watchlist, and desktop paths; links for unsampled feature wiring are omitted.

Main entry points: [`backend/app/db.py`](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/db.py) (Market Database), [`backend/app/main.py`](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/main.py) (FastAPI), [`backend/app/recommendation_routes.py`](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/recommendation_routes.py) (Recommendation API), [`frontend/app/page.tsx`](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/frontend/app/page.tsx) (Next.js Dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_collection["Market Data"]
  node_daily["Daily Sync<br/>[daily_sync.py]"]
  node_intraday["Intraday Data<br/>[intraday.py]"]
  node_newscollector["News Collector<br/>[news.py]"]
  node_foreign["Foreign Flow"]
  node_broker["Broker Activity"]
end

subgraph group_backend["Research API"]
  node_db[("Market Database<br/>[db.py]")]
  node_api["FastAPI<br/>[main.py]"]
  node_calendar["Market Calendar<br/>[market_calendar.py]"]
  node_analytics["Market Analytics<br/>[analytics.py]"]
  node_fundamental["Fundamental Screener<br/>[main.py]"]
  node_telegram["Telegram Delivery"]
end

subgraph group_trading["Paper Trading"]
  node_recommend["Recommendations"]
  node_recommendapi["Recommendation API"]
  node_aitrading["AI Trading<br/>[ai_trading.py]"]
  node_watchlist["AI Watchlist"]
  node_autotrade["AI Auto Trade<br/>[ai_auto_trade.py]"]
  node_paper["Paper Trading<br/>[paper_trading.py]"]
  node_risk["Risk Decisions<br/>[risk_service.py]"]
  node_performance["Performance"]
end

subgraph group_frontend["Workstation UI"]
  node_frontend["Next.js Dashboard<br/>[page.tsx]"]
  node_api_client["API Client<br/>[api.ts]"]
end

subgraph group_desktop["Desktop Access"]
  node_desktopui["Desktop UI<br/>[app.js]"]
  node_tauri["Tauri Shell<br/>[lib.rs]"]
end

node_user(("Investor"))
node_sources(("Yahoo, RSS, IDX"))
node_ai_provider["AI Provider<br/>[ai_provider.py]"]
node_telegram_service(("Telegram"))

node_sources -->|"provides prices"| node_daily
node_sources -->|"provides quotes"| node_intraday
node_sources -->|"provides news"| node_newscollector
node_sources -->|"provides EOD flow"| node_foreign
node_daily -->|"writes market data"| node_db
node_intraday -->|"writes prices"| node_db
node_newscollector -->|"writes news"| node_db
node_foreign -->|"stores flow"| node_db
node_broker -->|"reads activity"| node_db
node_user -->|"uses"| node_frontend
node_frontend -->|"requests data"| node_api_client
node_api_client -->|"calls API"| node_api
node_api -->|"reads and writes"| node_db
node_api -->|"computes market views"| node_analytics
node_api -->|"checks sessions"| node_calendar
node_api -->|"serves screening"| node_fundamental
node_recommendapi -->|"generates picks"| node_recommend
node_recommendapi -->|"reads recommendations"| node_db
node_recommendapi -->|"checks market status"| node_calendar
node_watchlist -->|"stores candidates"| node_db
node_autotrade -->|"executes simulation"| node_paper
node_paper -->|"records trades"| node_db
node_risk -->|"stores decisions"| node_db
node_performance -->|"reads trade history"| node_db
node_aitrading -.->|"requests analysis"| node_ai_provider
node_telegram -.->|"delivers reports"| node_telegram_service
node_user -->|"launches"| node_desktopui
node_desktopui -->|"invokes commands"| node_tauri
node_tauri -->|"proxies dashboard"| node_frontend

click node_daily "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/collector/daily_sync.py"
click node_intraday "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/collector/intraday.py"
click node_newscollector "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/collector/news.py"
click node_foreign "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/foreign_flow_service.py"
click node_broker "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/broker_activity_routes.py"
click node_db "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/db.py"
click node_api "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/main.py"
click node_calendar "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/market_calendar.py"
click node_analytics "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/analytics.py"
click node_fundamental "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/main.py"
click node_recommend "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/recommendation_service.py"
click node_recommendapi "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/recommendation_routes.py"
click node_aitrading "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/ai_trading.py"
click node_watchlist "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/watchlist_service.py"
click node_autotrade "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/ai_auto_trade.py"
click node_paper "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/paper_trading.py"
click node_risk "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/risk_service.py"
click node_performance "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/performance_service.py"
click node_telegram "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/telegram_delivery_model.py"
click node_frontend "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/frontend/app/page.tsx"
click node_api_client "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/frontend/lib/api.ts"
click node_desktopui "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/desktop/ui/app.js"
click node_tauri "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/desktop/src-tauri/lib.rs"
click node_ai_provider "https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/ai_provider.py"

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_daily,node_intraday,node_newscollector,node_foreign,node_broker toneBlue
class node_db,node_api,node_calendar,node_analytics,node_fundamental,node_telegram toneAmber
class node_recommend,node_recommendapi,node_aitrading,node_watchlist,node_autotrade,node_paper,node_risk,node_performance toneMint
class node_frontend,node_api_client toneRose
class node_desktopui,node_tauri,node_user,node_sources,node_ai_provider,node_telegram_service toneIndigo
```

## Components

### Market Data

- [Daily Sync](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/collector/daily_sync.py): `collector/daily_sync.py`
- [Intraday Data](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/collector/intraday.py): `collector/intraday.py`
- [News Collector](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/collector/news.py): `collector/news.py`
- [Foreign Flow](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/foreign_flow_service.py): `backend/app/foreign_flow_service.py`
- [Broker Activity](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/broker_activity_routes.py): `backend/app/broker_activity_routes.py`

### Research API

- [Market Database](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/db.py): `backend/app/db.py`
- [FastAPI](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/main.py): `backend/app/main.py`
- [Market Calendar](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/market_calendar.py): `backend/app/market_calendar.py`
- [Market Analytics](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/analytics.py): `backend/app/analytics.py`
- [Fundamental Screener](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/main.py): `backend/app/main.py`
- [Telegram Delivery](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/telegram_delivery_model.py): `backend/app/telegram_delivery_model.py`

### Paper Trading

- [Recommendations](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/recommendation_service.py): `backend/app/recommendation_service.py`
- [Recommendation API](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/recommendation_routes.py): `backend/app/recommendation_routes.py`
- [AI Trading](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/ai_trading.py): `backend/app/ai_trading.py`
- [AI Watchlist](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/watchlist_service.py): `backend/app/watchlist_service.py`
- [AI Auto Trade](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/ai_auto_trade.py): `backend/app/ai_auto_trade.py`
- [Paper Trading](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/paper_trading.py): `backend/app/paper_trading.py`
- [Risk Decisions](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/risk_service.py): `backend/app/risk_service.py`
- [Performance](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/performance_service.py): `backend/app/performance_service.py`

### Workstation UI

- [Next.js Dashboard](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/frontend/app/page.tsx): `frontend/app/page.tsx`
- [API Client](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/frontend/lib/api.ts): `frontend/lib/api.ts`

### Desktop Access

- [Desktop UI](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/desktop/ui/app.js): `desktop/ui/app.js`
- [Tauri Shell](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/desktop/src-tauri/lib.rs): `desktop/src-tauri/lib.rs`

### Other components

- **Investor**
- **Yahoo, RSS, IDX**
- [AI Provider](https://github.com/mqdd27/idx-stocks-dashboard/blob/main/backend/app/ai_provider.py): `backend/app/ai_provider.py`
- **Telegram**

## Connections

- Yahoo, RSS, IDX → Daily Sync: provides prices
- Yahoo, RSS, IDX → Intraday Data: provides quotes
- Yahoo, RSS, IDX → News Collector: provides news
- Yahoo, RSS, IDX → Foreign Flow: provides EOD flow
- Daily Sync → Market Database: writes market data
- Intraday Data → Market Database: writes prices
- News Collector → Market Database: writes news
- Foreign Flow → Market Database: stores flow
- Broker Activity → Market Database: reads activity
- Investor → Next.js Dashboard: uses
- Next.js Dashboard → API Client: requests data
- API Client → FastAPI: calls API
- FastAPI → Market Database: reads and writes
- FastAPI → Market Analytics: computes market views
- FastAPI → Market Calendar: checks sessions
- FastAPI → Fundamental Screener: serves screening
- Recommendation API → Recommendations: generates picks
- Recommendation API → Market Database: reads recommendations
- Recommendation API → Market Calendar: checks market status
- AI Watchlist → Market Database: stores candidates
- AI Auto Trade → Paper Trading: executes simulation
- Paper Trading → Market Database: records trades
- Risk Decisions → Market Database: stores decisions
- Performance → Market Database: reads trade history
- AI Trading → AI Provider: requests analysis
- Telegram Delivery → Telegram: delivers reports
- Investor → Desktop UI: launches
- Desktop UI → Tauri Shell: invokes commands
- Tauri Shell → Next.js Dashboard: proxies dashboard
