# hzy1522/tickflow-stock-panel architecture

> Architecture diagram of the GitHub repository hzy1522/tickflow-stock-panel, 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/hzy1522/tickflow-stock-panel
- Repository: https://github.com/hzy1522/tickflow-stock-panel

## Overview

This is a self-hosted, multi-market quantitative stock research workspace. Users switch markets, inspect market and stock analysis, screen strategies, monitor alerts, and run backtests; results are served through the React UI and FastAPI. A central daily-data pipeline synchronizes instruments and prices, computes enriched indicators, and persists market-partitioned data used by analysis and research features. The graph preserves the README’s major capabilities; several feature connections are documented rather than verified in sampled implementation excerpts.

Main entry points: [`frontend/src/main.tsx`](https://github.com/hzy1522/tickflow-stock-panel/blob/main/frontend/src/main.tsx) (React workspace), [`backend/app/main.py`](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/main.py) (FastAPI application), [`backend/app/api/analysis.py`](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/api/analysis.py) (Analysis endpoints), [`backend/app/tickflow/repository.py`](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/tickflow/repository.py) (Market data repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Web workspace"]
  node_web["React workspace<br/>[main.tsx]"]
  node_market["Market selection<br/>[market.tsx]"]
  node_dashboard["Market dashboard<br/>[Dashboard.tsx]"]
  node_screener_ui["Stock screener<br/>[Screener.tsx]"]
  node_backtest_ui["Backtest workbench<br/>[Backtest.tsx]"]
  node_watchlist_ui["Watchlist<br/>[Watchlist.tsx]"]
end

subgraph group_api["HTTP interface"]
  node_api["FastAPI application<br/>[main.py]"]
  node_screen_api["Screening endpoints<br/>[screener.py]"]
  node_analysis_api["Analysis endpoints<br/>[analysis.py]"]
  node_backtest_api["Backtest endpoints<br/>[backtest.py]"]
  node_pipeline_api["Pipeline endpoints<br/>[pipeline.py]"]
  node_watch_api["Watchlist endpoints<br/>[watchlist.py]"]
end

subgraph group_data["Market data"]
  node_pipeline["Daily data pipeline<br/>[daily_pipeline.py]"]
  node_providers["Data providers<br/>[registry.py]"]
  node_indicators["Indicator computation<br/>[pipeline.py]"]
  node_repository["Market data repository<br/>[repository.py]"]
  node_parquet[("Parquet data store<br/>[parquet.py]")]
end

subgraph group_research["Research and analysis"]
  node_strategy["Strategy engine<br/>[engine.py]"]
  node_backtest["Backtest engine<br/>[engine.py]"]
  node_stock_analysis["Stock analysis<br/>[stock_analyzer.py]"]
  node_market_services["Market analysis"]
end

subgraph group_operations["Monitoring and reports"]
  node_monitor["Alerts and monitoring<br/>[sector_monitor.py]"]
  node_recap["AI market recap<br/>[market_recap.py]"]
  node_financials["Financial analysis"]
end

node_user(("Investor"))
node_external_data(("External market feeds"))

node_user -->|"uses"| node_web
node_web -->|"selects market"| node_market
node_web -->|"opens"| node_dashboard
node_web -->|"screens stocks"| node_screener_ui
node_web -->|"runs research"| node_backtest_ui
node_web -->|"manages list"| node_watchlist_ui
node_dashboard -->|"requests data"| node_api
node_screener_ui -->|"requests screening"| node_screen_api
node_backtest_ui -->|"submits backtest"| node_backtest_api
node_watchlist_ui -->|"manages symbols"| node_watch_api
node_api -->|"routes requests"| node_screen_api
node_api -->|"routes requests"| node_analysis_api
node_api -->|"routes requests"| node_backtest_api
node_api -->|"routes requests"| node_pipeline_api
node_api -->|"routes requests"| node_watch_api
node_pipeline_api -->|"runs sync"| node_pipeline
node_pipeline -->|"requests market data"| node_providers
node_external_data -.->|"supplies quotes"| node_providers
node_pipeline -->|"computes enriched data"| node_indicators
node_pipeline -->|"updates views"| node_repository
node_repository -->|"reads and writes"| node_parquet
node_screen_api -->|"executes strategies"| node_strategy
node_backtest_api -->|"runs simulation"| node_backtest
node_analysis_api -->|"requests analysis"| node_stock_analysis
node_analysis_api -->|"requests overview"| node_market_services
node_analysis_api -->|"requests recap"| node_recap
node_analysis_api -->|"requests financial analysis"| node_financials
node_screen_api -->|"reads market data"| node_repository
node_backtest -->|"loads price history"| node_repository
node_market_services -->|"reads market data"| node_repository
node_stock_analysis -->|"reads price history"| node_repository
node_analysis_api -->|"serves monitoring"| node_monitor
node_recap -.->|"may use AI provider"| node_external_data

click node_web "https://github.com/hzy1522/tickflow-stock-panel/blob/main/frontend/src/main.tsx"
click node_market "https://github.com/hzy1522/tickflow-stock-panel/blob/main/frontend/src/lib/market.tsx"
click node_dashboard "https://github.com/hzy1522/tickflow-stock-panel/blob/main/frontend/src/pages/Dashboard.tsx"
click node_screener_ui "https://github.com/hzy1522/tickflow-stock-panel/blob/main/frontend/src/pages/Screener.tsx"
click node_backtest_ui "https://github.com/hzy1522/tickflow-stock-panel/blob/main/frontend/src/pages/Backtest.tsx"
click node_watchlist_ui "https://github.com/hzy1522/tickflow-stock-panel/blob/main/frontend/src/pages/Watchlist.tsx"
click node_api "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/main.py"
click node_screen_api "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/api/screener.py"
click node_analysis_api "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/api/analysis.py"
click node_backtest_api "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/api/backtest.py"
click node_pipeline_api "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/api/pipeline.py"
click node_watch_api "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/api/watchlist.py"
click node_pipeline "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/jobs/daily_pipeline.py"
click node_providers "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/data_providers/registry.py"
click node_indicators "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/indicators/pipeline.py"
click node_repository "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/tickflow/repository.py"
click node_parquet "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/parquet.py"
click node_strategy "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/strategy/engine.py"
click node_backtest "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/backtest/engine.py"
click node_stock_analysis "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/services/stock_analyzer.py"
click node_market_services "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/services/market_overview_builder.py"
click node_monitor "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/services/sector_monitor.py"
click node_recap "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/services/market_recap.py"
click node_financials "https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/services/financial_analyzer.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_web,node_market,node_dashboard,node_screener_ui,node_backtest_ui,node_watchlist_ui toneBlue
class node_api,node_screen_api,node_analysis_api,node_backtest_api,node_pipeline_api,node_watch_api toneAmber
class node_pipeline,node_providers,node_indicators,node_repository,node_parquet toneMint
class node_strategy,node_backtest,node_stock_analysis,node_market_services toneRose
class node_monitor,node_recap,node_financials,node_user,node_external_data toneIndigo
```

## Components

### Web workspace

- [React workspace](https://github.com/hzy1522/tickflow-stock-panel/blob/main/frontend/src/main.tsx): `frontend/src/main.tsx`
- [Market selection](https://github.com/hzy1522/tickflow-stock-panel/blob/main/frontend/src/lib/market.tsx): `frontend/src/lib/market.tsx`
- [Market dashboard](https://github.com/hzy1522/tickflow-stock-panel/blob/main/frontend/src/pages/Dashboard.tsx): `frontend/src/pages/Dashboard.tsx`
- [Stock screener](https://github.com/hzy1522/tickflow-stock-panel/blob/main/frontend/src/pages/Screener.tsx): `frontend/src/pages/Screener.tsx`
- [Backtest workbench](https://github.com/hzy1522/tickflow-stock-panel/blob/main/frontend/src/pages/Backtest.tsx): `frontend/src/pages/Backtest.tsx`
- [Watchlist](https://github.com/hzy1522/tickflow-stock-panel/blob/main/frontend/src/pages/Watchlist.tsx): `frontend/src/pages/Watchlist.tsx`

### HTTP interface

- [FastAPI application](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/main.py): `backend/app/main.py`
- [Screening endpoints](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/api/screener.py): `backend/app/api/screener.py`
- [Analysis endpoints](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/api/analysis.py): `backend/app/api/analysis.py`
- [Backtest endpoints](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/api/backtest.py): `backend/app/api/backtest.py`
- [Pipeline endpoints](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/api/pipeline.py): `backend/app/api/pipeline.py`
- [Watchlist endpoints](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/api/watchlist.py): `backend/app/api/watchlist.py`

### Market data

- [Daily data pipeline](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/jobs/daily_pipeline.py): `backend/app/jobs/daily_pipeline.py`
- [Data providers](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/data_providers/registry.py): `backend/app/data_providers/registry.py`
- [Indicator computation](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/indicators/pipeline.py): `backend/app/indicators/pipeline.py`
- [Market data repository](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/tickflow/repository.py): `backend/app/tickflow/repository.py`
- [Parquet data store](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/parquet.py): `backend/app/parquet.py`

### Research and analysis

- [Strategy engine](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/strategy/engine.py): `backend/app/strategy/engine.py`
- [Backtest engine](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/backtest/engine.py): `backend/app/backtest/engine.py`
- [Stock analysis](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/services/stock_analyzer.py): `backend/app/services/stock_analyzer.py`
- [Market analysis](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/services/market_overview_builder.py): `backend/app/services/market_overview_builder.py`

### Monitoring and reports

- [Alerts and monitoring](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/services/sector_monitor.py): `backend/app/services/sector_monitor.py`
- [AI market recap](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/services/market_recap.py): `backend/app/services/market_recap.py`
- [Financial analysis](https://github.com/hzy1522/tickflow-stock-panel/blob/main/backend/app/services/financial_analyzer.py): `backend/app/services/financial_analyzer.py`

### Other components

- **Investor**
- **External market feeds**

## Connections

- Investor → React workspace: uses
- React workspace → Market selection: selects market
- React workspace → Market dashboard: opens
- React workspace → Stock screener: screens stocks
- React workspace → Backtest workbench: runs research
- React workspace → Watchlist: manages list
- Market dashboard → FastAPI application: requests data
- Stock screener → Screening endpoints: requests screening
- Backtest workbench → Backtest endpoints: submits backtest
- Watchlist → Watchlist endpoints: manages symbols
- FastAPI application → Screening endpoints: routes requests
- FastAPI application → Analysis endpoints: routes requests
- FastAPI application → Backtest endpoints: routes requests
- FastAPI application → Pipeline endpoints: routes requests
- FastAPI application → Watchlist endpoints: routes requests
- Pipeline endpoints → Daily data pipeline: runs sync
- Daily data pipeline → Data providers: requests market data
- External market feeds → Data providers: supplies quotes
- Daily data pipeline → Indicator computation: computes enriched data
- Daily data pipeline → Market data repository: updates views
- Market data repository → Parquet data store: reads and writes
- Screening endpoints → Strategy engine: executes strategies
- Backtest endpoints → Backtest engine: runs simulation
- Analysis endpoints → Stock analysis: requests analysis
- Analysis endpoints → Market analysis: requests overview
- Analysis endpoints → AI market recap: requests recap
- Analysis endpoints → Financial analysis: requests financial analysis
- Screening endpoints → Market data repository: reads market data
- Backtest engine → Market data repository: loads price history
- Market analysis → Market data repository: reads market data
- Stock analysis → Market data repository: reads price history
- Analysis endpoints → Alerts and monitoring: serves monitoring
- AI market recap → External market feeds: may use AI provider
