# vedant-0509/zerodha-a-online-brokerage-platform architecture

> Architecture diagram of the GitHub repository vedant-0509/zerodha-a-online-brokerage-platform, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/vedant-0509/zerodha-a-online-brokerage-platform
- Repository: https://github.com/vedant-0509/zerodha-a-online-brokerage-platform

## Overview

This is an investing dashboard with stock research and trading-oriented views, holdings, watchlists, market data, and mutual-fund discovery and portfolio features. Users enter through the frontend, authenticate, and use dashboard pages; backend services expose the corresponding data and account capabilities. The graph preserves the major product areas visible in the tree and source index. Evidence is limited to the supplied excerpts and reference index; several unsampled subsystem links are therefore not asserted.

Main entry points: [`backend/config/mongodb.js`](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/config/mongodb.js) (MongoDB connection), [`backend/indexMarket/server.js`](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/indexMarket/server.js) (Index market server), [`frontend/src/index.js`](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/frontend/src/index.js) (Frontend entry), [`frontend/src/Pages/Dashboard/Dashboard.js`](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/frontend/src/Pages/Dashboard/Dashboard.js) (Dashboard pages)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Web application"]
  node_web["Frontend entry<br/>[index.js]"]
  node_authui["Login and signup<br/>[Login.jsx]"]
  node_dashboard["Dashboard pages<br/>[Dashboard.js]"]
  node_stockpages["Stock pages<br/>[Stocks.js]"]
  node_fundpages["Fund pages<br/>[MutualFunds.js]"]
end

subgraph group_identity["Identity and platform"]
  node_authapi["Authentication API<br/>[app.js]"]
  node_authmw["Token authentication"]
  node_requestctx["Request context<br/>[requestContext.js]"]
  node_cors["CORS policy<br/>[corsOptions.js]"]
  node_errors["Error handling<br/>[errorHandler.js]"]
  node_mongodb[("MongoDB connection<br/>[mongodb.js]")]
end

subgraph group_stocks["Stock services"]
  node_stockapi["Stock data API<br/>[server.js]"]
  node_search["Stock search<br/>[search.js]"]
  node_detail["Stock detail API<br/>[server.js]"]
  node_simorders["Simulated orders"]
  node_holdings["Holdings service<br/>[app.js]"]
  node_watchlist["Watchlist service<br/>[app.js]"]
  node_orders["Orders service<br/>[app.js]"]
end

subgraph group_market["Market data"]
  node_marketapi["Index market server<br/>[server.js]"]
  node_indexfeed["Live index feed"]
  node_closing["Closing prices"]
  node_redis[("Market cache<br/>[redisClient.js]")]
end

subgraph group_funds["Mutual funds"]
  node_mfapi["Fund API"]
  node_mfcontroller["Fund and portfolio logic"]
  node_mfsync["Fund data sync<br/>[mfSyncService.js]"]
  node_mfmetadata["Fund metadata"]
  node_mfmetadatactl["Metadata controller"]
end

node_user(("Investor"))

node_user -->|"opens"| node_web
node_web -->|"routes to"| node_authui
node_web -->|"routes to"| node_dashboard
node_dashboard -.->|"includes"| node_stockpages
node_dashboard -.->|"includes"| node_fundpages
node_authui -.->|"uses"| node_authapi
node_authapi -->|"connects"| node_mongodb
node_authmw -.->|"guards data routes"| node_mongodb
node_stockapi -->|"dispatches to"| node_search
node_search -->|"queries"| node_mongodb
node_detail -->|"uses"| node_mongodb
node_detail -->|"uses"| node_simorders
node_holdings -->|"reads holdings"| node_mongodb
node_marketapi -->|"starts feed"| node_indexfeed
node_marketapi -->|"connects"| node_redis
node_marketapi -->|"starts scheduler"| node_closing
node_indexfeed -->|"reads and writes"| node_redis
node_closing -->|"uses cache"| node_redis
node_closing -->|"uses feed service"| node_indexfeed
node_mfapi -->|"routes to"| node_mfcontroller
node_mfcontroller -->|"syncs data"| node_mfsync
node_mfcontroller -->|"queries"| node_mongodb
node_mfmetadata -->|"routes to"| node_mfmetadatactl
node_mfmetadatactl -->|"queries"| node_mongodb

click node_web "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/frontend/src/index.js"
click node_authui "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/frontend/src/Pages/Signup/Login.jsx"
click node_dashboard "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/frontend/src/Pages/Dashboard/Dashboard.js"
click node_stockpages "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/frontend/src/Pages/Dashboard/Stocks/Stocks.js"
click node_fundpages "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/frontend/src/Pages/Dashboard/MutualFunds/MutualFunds.js"
click node_authapi "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/signup/app.js"
click node_authmw "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/middleware/authenticateToken.js"
click node_requestctx "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/middleware/requestContext.js"
click node_cors "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/middleware/corsOptions.js"
click node_errors "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/middleware/errorHandler.js"
click node_mongodb "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/config/mongodb.js"
click node_stockapi "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/stocks/server.js"
click node_search "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/stocks/search.js"
click node_detail "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/detailStock/server.js"
click node_simorders "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/detailStock/simulatedOrderService.js"
click node_holdings "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/holding/app.js"
click node_watchlist "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/watchlist/app.js"
click node_orders "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/orders/app.js"
click node_marketapi "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/indexMarket/server.js"
click node_indexfeed "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/indexMarket/indexMarketService.js"
click node_closing "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/indexMarket/closingPriceService.js"
click node_redis "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/indexMarket/redisClient.js"
click node_mfapi "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/mutualfunds/mutualFundRoutes.js"
click node_mfcontroller "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/mutualfunds/mutualFundController.js"
click node_mfsync "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/mutualfunds/mfSyncService.js"
click node_mfmetadata "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/mutualfunds/mfMetadataRoutes.js"
click node_mfmetadatactl "https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/mutualfunds/mfMetadataController.js"

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_authui,node_dashboard,node_stockpages,node_fundpages toneBlue
class node_authapi,node_authmw,node_requestctx,node_cors,node_errors,node_mongodb toneAmber
class node_stockapi,node_search,node_detail,node_simorders,node_holdings,node_watchlist,node_orders toneMint
class node_marketapi,node_indexfeed,node_closing,node_redis toneRose
class node_mfapi,node_mfcontroller,node_mfsync,node_mfmetadata,node_mfmetadatactl,node_user toneIndigo
```

## Components

### Web application

- [Frontend entry](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/frontend/src/index.js): `frontend/src/index.js`
- [Login and signup](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/frontend/src/Pages/Signup/Login.jsx): `frontend/src/Pages/Signup/Login.jsx`
- [Dashboard pages](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/frontend/src/Pages/Dashboard/Dashboard.js): `frontend/src/Pages/Dashboard/Dashboard.js`
- [Stock pages](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/frontend/src/Pages/Dashboard/Stocks/Stocks.js): `frontend/src/Pages/Dashboard/Stocks/Stocks.js`
- [Fund pages](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/frontend/src/Pages/Dashboard/MutualFunds/MutualFunds.js): `frontend/src/Pages/Dashboard/MutualFunds/MutualFunds.js`

### Identity and platform

- [Authentication API](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/signup/app.js): `backend/signup/app.js`
- [Token authentication](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/middleware/authenticateToken.js): `backend/middleware/authenticateToken.js`
- [Request context](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/middleware/requestContext.js): `backend/middleware/requestContext.js`
- [CORS policy](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/middleware/corsOptions.js): `backend/middleware/corsOptions.js`
- [Error handling](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/middleware/errorHandler.js): `backend/middleware/errorHandler.js`
- [MongoDB connection](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/config/mongodb.js): `backend/config/mongodb.js`

### Stock services

- [Stock data API](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/stocks/server.js): `backend/stocks/server.js`
- [Stock search](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/stocks/search.js): `backend/stocks/search.js`
- [Stock detail API](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/detailStock/server.js): `backend/detailStock/server.js`
- [Simulated orders](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/detailStock/simulatedOrderService.js): `backend/detailStock/simulatedOrderService.js`
- [Holdings service](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/holding/app.js): `backend/holding/app.js`
- [Watchlist service](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/watchlist/app.js): `backend/watchlist/app.js`
- [Orders service](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/orders/app.js): `backend/orders/app.js`

### Market data

- [Index market server](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/indexMarket/server.js): `backend/indexMarket/server.js`
- [Live index feed](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/indexMarket/indexMarketService.js): `backend/indexMarket/indexMarketService.js`
- [Closing prices](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/indexMarket/closingPriceService.js): `backend/indexMarket/closingPriceService.js`
- [Market cache](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/indexMarket/redisClient.js): `backend/indexMarket/redisClient.js`

### Mutual funds

- [Fund API](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/mutualfunds/mutualFundRoutes.js): `backend/mutualfunds/mutualFundRoutes.js`
- [Fund and portfolio logic](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/mutualfunds/mutualFundController.js): `backend/mutualfunds/mutualFundController.js`
- [Fund data sync](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/mutualfunds/mfSyncService.js): `backend/mutualfunds/mfSyncService.js`
- [Fund metadata](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/mutualfunds/mfMetadataRoutes.js): `backend/mutualfunds/mfMetadataRoutes.js`
- [Metadata controller](https://github.com/vedant-0509/zerodha-a-online-brokerage-platform/blob/main/backend/mutualfunds/mfMetadataController.js): `backend/mutualfunds/mfMetadataController.js`

### Other components

- **Investor**

## Connections

- Investor → Frontend entry: opens
- Frontend entry → Login and signup: routes to (evidence: `frontend/src/index.js`)
- Frontend entry → Dashboard pages: routes to (evidence: `frontend/src/index.js`)
- Dashboard pages → Stock pages: includes
- Dashboard pages → Fund pages: includes
- Login and signup → Authentication API: uses
- Authentication API → MongoDB connection: connects (evidence: `backend/signup/app.js`)
- Token authentication → MongoDB connection: guards data routes
- Stock data API → Stock search: dispatches to (evidence: `backend/stocks/server.js`)
- Stock search → MongoDB connection: queries (evidence: `backend/stocks/search.js`)
- Stock detail API → MongoDB connection: uses (evidence: `backend/detailStock/server.js`)
- Stock detail API → Simulated orders: uses (evidence: `backend/detailStock/server.js`)
- Holdings service → MongoDB connection: reads holdings (evidence: `backend/holding/app.js`)
- Index market server → Live index feed: starts feed (evidence: `backend/indexMarket/server.js`)
- Index market server → Market cache: connects (evidence: `backend/indexMarket/server.js`)
- Index market server → Closing prices: starts scheduler (evidence: `backend/indexMarket/server.js`)
- Live index feed → Market cache: reads and writes (evidence: `backend/indexMarket/indexMarketService.js`)
- Closing prices → Market cache: uses cache (evidence: `backend/indexMarket/closingPriceService.js`)
- Closing prices → Live index feed: uses feed service (evidence: `backend/indexMarket/closingPriceService.js`)
- Fund API → Fund and portfolio logic: routes to (evidence: `backend/mutualfunds/mutualFundRoutes.js`)
- Fund and portfolio logic → Fund data sync: syncs data (evidence: `backend/mutualfunds/mutualFundController.js`)
- Fund and portfolio logic → MongoDB connection: queries (evidence: `backend/mutualfunds/mutualFundController.js`)
- Fund metadata → Metadata controller: routes to (evidence: `backend/mutualfunds/mfMetadataRoutes.js`)
- Metadata controller → MongoDB connection: queries (evidence: `backend/mutualfunds/mfMetadataController.js`)
