# gopi-anand/indianstockterminal architecture

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

## Overview

IndianStockTerminal is a Flask-based Indian-market research platform. Users browse market dashboards or search for a stock; Flask routes requests to market-data and analysis modules, then returns dashboard or stock-detail results. Analysis includes technicals, fundamentals, chart patterns and quant factors, while a separate screener ranks multi-bagger candidates. Broker account setup is a parallel workflow. The README documents these capabilities; source excerpts are partial, so some feature-level wiring is not shown and is omitted rather than inferred.

Main entry points: [`app.py`](https://github.com/gopi-anand/indianstockterminal/blob/master/app.py) (Flask routes), [`stock_data.py`](https://github.com/gopi-anand/indianstockterminal/blob/master/stock_data.py) (Market data), [`screener.py`](https://github.com/gopi-anand/indianstockterminal/blob/master/screener.py) (Multi-bagger screener), [`analyzer.py`](https://github.com/gopi-anand/indianstockterminal/blob/master/analyzer.py) (Analysis engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_browser["Browser UI<br/>[main.js]"]
  node_enhanced["Pro dashboard"]
  node_templates["Page templates"]
  node_flask["Flask routes<br/>[app.py]"]
end

subgraph group_market["Market data"]
  node_data["Market data<br/>[stock_data.py]"]
  node_yf["yfinance"]
  node_cache[("Disk cache<br/>[data_cache.py]")]
end

subgraph group_research["Stock research"]
  node_analysis["Analysis engine<br/>[analyzer.py]"]
  node_patterns["Pattern detection<br/>[analyzer.py]"]
  node_alpha["Alpha factors<br/>[alpha_factors.py]"]
  node_screener["Multi-bagger screener<br/>[screener.py]"]
end

subgraph group_accounts["Broker accounts"]
  node_brokerui["Account interface<br/>[main.js]"]
  node_broker["Broker manager<br/>[broker_manager.py]"]
  node_brokerstore[("Account files<br/>[broker_manager.py]")]
  node_brokers["Broker APIs"]
end

node_investor(("Investor"))

node_investor -->|"uses"| node_browser
node_browser -->|"displays"| node_templates
node_browser -->|"requests"| node_flask
node_enhanced -->|"requests"| node_flask
node_flask -->|"fetches data"| node_data
node_flask -->|"requests analysis"| node_analysis
node_flask -->|"routes screening"| node_screener
node_flask -->|"routes accounts"| node_broker
node_data -->|"fetches quotes"| node_yf
node_data -->|"reads and writes"| node_cache
node_analysis -->|"loads history"| node_data
node_patterns -->|"loads history"| node_data
node_analysis -->|"uses factors"| node_alpha
node_screener -->|"scores technicals"| node_analysis
node_screener -->|"loads stock data"| node_data
node_screener -->|"scores factors"| node_alpha
node_brokerui -->|"sends account requests"| node_flask
node_broker -->|"persists accounts"| node_brokerstore
node_broker -->|"exchanges token"| node_brokers

click node_browser "https://github.com/gopi-anand/indianstockterminal/blob/master/static/js/main.js"
click node_enhanced "https://github.com/gopi-anand/indianstockterminal/blob/master/static/js/dashboard-enhanced.js"
click node_templates "https://github.com/gopi-anand/indianstockterminal/tree/master/templates"
click node_flask "https://github.com/gopi-anand/indianstockterminal/blob/master/app.py"
click node_data "https://github.com/gopi-anand/indianstockterminal/blob/master/stock_data.py"
click node_cache "https://github.com/gopi-anand/indianstockterminal/blob/master/data_cache.py"
click node_analysis "https://github.com/gopi-anand/indianstockterminal/blob/master/analyzer.py"
click node_patterns "https://github.com/gopi-anand/indianstockterminal/blob/master/analyzer.py"
click node_alpha "https://github.com/gopi-anand/indianstockterminal/blob/master/alpha_factors.py"
click node_screener "https://github.com/gopi-anand/indianstockterminal/blob/master/screener.py"
click node_brokerui "https://github.com/gopi-anand/indianstockterminal/blob/master/static/js/main.js"
click node_broker "https://github.com/gopi-anand/indianstockterminal/blob/master/broker_manager.py"
click node_brokerstore "https://github.com/gopi-anand/indianstockterminal/blob/master/broker_manager.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_browser,node_enhanced,node_templates,node_flask toneBlue
class node_data,node_yf,node_cache toneAmber
class node_analysis,node_patterns,node_alpha,node_screener toneMint
class node_brokerui,node_broker,node_brokerstore,node_brokers toneRose
class node_investor toneIndigo
```

## Components

### Web experience

- [Browser UI](https://github.com/gopi-anand/indianstockterminal/blob/master/static/js/main.js): `static/js/main.js`
- [Pro dashboard](https://github.com/gopi-anand/indianstockterminal/blob/master/static/js/dashboard-enhanced.js): `static/js/dashboard-enhanced.js`
- [Page templates](https://github.com/gopi-anand/indianstockterminal/tree/master/templates): `templates`
- [Flask routes](https://github.com/gopi-anand/indianstockterminal/blob/master/app.py): `app.py`

### Market data

- [Market data](https://github.com/gopi-anand/indianstockterminal/blob/master/stock_data.py): `stock_data.py`
- **yfinance**
- [Disk cache](https://github.com/gopi-anand/indianstockterminal/blob/master/data_cache.py): `data_cache.py`

### Stock research

- [Analysis engine](https://github.com/gopi-anand/indianstockterminal/blob/master/analyzer.py): `analyzer.py`
- [Pattern detection](https://github.com/gopi-anand/indianstockterminal/blob/master/analyzer.py): `analyzer.py`
- [Alpha factors](https://github.com/gopi-anand/indianstockterminal/blob/master/alpha_factors.py): `alpha_factors.py`
- [Multi-bagger screener](https://github.com/gopi-anand/indianstockterminal/blob/master/screener.py): `screener.py`

### Broker accounts

- [Account interface](https://github.com/gopi-anand/indianstockterminal/blob/master/static/js/main.js): `static/js/main.js`
- [Broker manager](https://github.com/gopi-anand/indianstockterminal/blob/master/broker_manager.py): `broker_manager.py`
- [Account files](https://github.com/gopi-anand/indianstockterminal/blob/master/broker_manager.py): `broker_manager.py`
- **Broker APIs**

### Other components

- **Investor**

## Connections

- Investor → Browser UI: uses (evidence: `README.md`)
- Browser UI → Page templates: displays (evidence: `README.md`)
- Browser UI → Flask routes: requests (evidence: `README.md`)
- Pro dashboard → Flask routes: requests (evidence: `README.md`)
- Flask routes → Market data: fetches data (evidence: `app.py`)
- Flask routes → Analysis engine: requests analysis (evidence: `app.py`)
- Flask routes → Multi-bagger screener: routes screening (evidence: `app.py`)
- Flask routes → Broker manager: routes accounts (evidence: `app.py`)
- Market data → yfinance: fetches quotes (evidence: `README.md`)
- Market data → Disk cache: reads and writes (evidence: `stock_data.py`)
- Analysis engine → Market data: loads history (evidence: `analyzer.py`)
- Pattern detection → Market data: loads history (evidence: `analyzer.py`)
- Analysis engine → Alpha factors: uses factors (evidence: `README.md`)
- Multi-bagger screener → Analysis engine: scores technicals (evidence: `screener.py`)
- Multi-bagger screener → Market data: loads stock data (evidence: `screener.py`)
- Multi-bagger screener → Alpha factors: scores factors (evidence: `README.md`)
- Account interface → Flask routes: sends account requests (evidence: `README.md`)
- Broker manager → Account files: persists accounts (evidence: `broker_manager.py`)
- Broker manager → Broker APIs: exchanges token (evidence: `broker_manager.py`)
