# srajankharvi/trade-analysis architecture

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

## Overview

Trade Analysis is a trading journal with account access, trade entry and review, performance analytics, and a market chart with backtesting actions. The frontend routes authenticated users to these workflows; the Express backend mounts authentication, trade, and analytics APIs backed by MongoDB models. The chart also fetches market data directly from Binance. Analytics calculation is present as a separate FastAPI service. Several page, controller, and analytics-route implementations were not sampled, so their internal wiring is left unspecified.

Main entry points: [`frontend/src/components/Layout.tsx`](https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/components/Layout.tsx) (App navigation), [`frontend/src/App.tsx`](https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/App.tsx) (Route shell), [`backend/src/index.ts`](https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/index.ts) (API server), [`frontend/src/pages/TradingChart.tsx`](https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/TradingChart.tsx) (Market chart)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Trading interface"]
  node_app["Route shell<br/>[App.tsx]"]
  node_authctx["Session context<br/>[AuthContext.tsx]"]
  node_layout["App navigation<br/>[Layout.tsx]"]
  node_login["Sign in<br/>[Login.tsx]"]
  node_register["Registration<br/>[Register.tsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.tsx]"]
  node_trades["Trade journal<br/>[Trades.tsx]"]
  node_addtrade["Trade entry<br/>[AddTrade.tsx]"]
  node_analyticsui["Analytics view<br/>[Analytics.tsx]"]
  node_chart["Market chart<br/>[TradingChart.tsx]"]
end

subgraph group_api["Application API"]
  node_server["API server<br/>[index.ts]"]
  node_authroutes["Auth routes<br/>[auth.ts]"]
  node_authctl["Auth handlers<br/>[auth.ts]"]
  node_authmw["Auth middleware<br/>[auth.ts]"]
  node_traderoutes["Trade routes<br/>[trade.ts]"]
  node_tradectrl["Trade handlers<br/>[trade.ts]"]
  node_analyticsroute["Analytics route<br/>[analytics.ts]"]
end

subgraph group_storage["Persistence"]
  node_userstore[("User records<br/>[User.ts]")]
  node_tradestore[("Trade records<br/>[Trade.ts]")]
end

subgraph group_analysis["Analytics service"]
  node_calc["Analytics calculation<br/>[main.py]"]
end

node_trader(("Trader"))
node_mongodb[("MongoDB")]
node_binance["Binance market API"]
node_browserstore[("Browser storage")]

node_trader -->|"uses"| node_app
node_app -->|"provides session"| node_authctx
node_app -->|"routes"| node_login
node_app -->|"routes"| node_register
node_app -->|"protects routes"| node_layout
node_layout -->|"routes"| node_dashboard
node_layout -->|"routes"| node_trades
node_layout -->|"routes"| node_addtrade
node_layout -->|"routes"| node_analyticsui
node_layout -->|"routes"| node_chart
node_authctx -->|"reads/writes"| node_browserstore
node_server -->|"mounts"| node_authroutes
node_server -->|"mounts"| node_traderoutes
node_server -->|"mounts"| node_analyticsroute
node_authroutes -->|"dispatches"| node_authctl
node_authctl -->|"reads/writes"| node_userstore
node_traderoutes -->|"guards"| node_authmw
node_traderoutes -->|"dispatches"| node_tradectrl
node_authmw -->|"loads user"| node_userstore
node_tradectrl -->|"reads/writes"| node_tradestore
node_server -->|"connects"| node_mongodb
node_chart -->|"requests trades"| node_server
node_chart -->|"fetches market data"| node_binance

click node_app "https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/App.tsx"
click node_authctx "https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/context/AuthContext.tsx"
click node_layout "https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/components/Layout.tsx"
click node_login "https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/Login.tsx"
click node_register "https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/Register.tsx"
click node_dashboard "https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/Dashboard.tsx"
click node_trades "https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/Trades.tsx"
click node_addtrade "https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/AddTrade.tsx"
click node_analyticsui "https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/Analytics.tsx"
click node_chart "https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/TradingChart.tsx"
click node_server "https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/index.ts"
click node_authroutes "https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/routes/auth.ts"
click node_authctl "https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/controllers/auth.ts"
click node_authmw "https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/middleware/auth.ts"
click node_traderoutes "https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/routes/trade.ts"
click node_tradectrl "https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/controllers/trade.ts"
click node_analyticsroute "https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/routes/analytics.ts"
click node_userstore "https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/models/User.ts"
click node_tradestore "https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/models/Trade.ts"
click node_calc "https://github.com/srajankharvi/trade-analysis/blob/main/analytics/main.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_app,node_authctx,node_layout,node_login,node_register,node_dashboard,node_trades,node_addtrade,node_analyticsui,node_chart toneBlue
class node_server,node_authroutes,node_authctl,node_authmw,node_traderoutes,node_tradectrl,node_analyticsroute,node_mongodb,node_browserstore toneAmber
class node_userstore,node_tradestore,node_binance toneMint
class node_calc toneRose
class node_trader toneIndigo
```

## Components

### Trading interface

- [Route shell](https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Session context](https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/context/AuthContext.tsx): `frontend/src/context/AuthContext.tsx`
- [App navigation](https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/components/Layout.tsx): `frontend/src/components/Layout.tsx`
- [Sign in](https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/Login.tsx): `frontend/src/pages/Login.tsx`
- [Registration](https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/Register.tsx): `frontend/src/pages/Register.tsx`
- [Dashboard](https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/Dashboard.tsx): `frontend/src/pages/Dashboard.tsx`
- [Trade journal](https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/Trades.tsx): `frontend/src/pages/Trades.tsx`
- [Trade entry](https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/AddTrade.tsx): `frontend/src/pages/AddTrade.tsx`
- [Analytics view](https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/Analytics.tsx): `frontend/src/pages/Analytics.tsx`
- [Market chart](https://github.com/srajankharvi/trade-analysis/blob/main/frontend/src/pages/TradingChart.tsx): `frontend/src/pages/TradingChart.tsx`

### Application API

- [API server](https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/index.ts): `backend/src/index.ts`
- [Auth routes](https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/routes/auth.ts): `backend/src/routes/auth.ts`
- [Auth handlers](https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/controllers/auth.ts): `backend/src/controllers/auth.ts`
- [Auth middleware](https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/middleware/auth.ts): `backend/src/middleware/auth.ts`
- [Trade routes](https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/routes/trade.ts): `backend/src/routes/trade.ts`
- [Trade handlers](https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/controllers/trade.ts): `backend/src/controllers/trade.ts`
- [Analytics route](https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/routes/analytics.ts): `backend/src/routes/analytics.ts`

### Persistence

- [User records](https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/models/User.ts): `backend/src/models/User.ts`
- [Trade records](https://github.com/srajankharvi/trade-analysis/blob/main/backend/src/models/Trade.ts): `backend/src/models/Trade.ts`

### Analytics service

- [Analytics calculation](https://github.com/srajankharvi/trade-analysis/blob/main/analytics/main.py): `analytics/main.py`

### Other components

- **Trader**
- **MongoDB**
- **Binance market API**
- **Browser storage**

## Connections

- Trader → Route shell: uses
- Route shell → Session context: provides session
- Route shell → Sign in: routes
- Route shell → Registration: routes
- Route shell → App navigation: protects routes
- App navigation → Dashboard: routes
- App navigation → Trade journal: routes
- App navigation → Trade entry: routes
- App navigation → Analytics view: routes
- App navigation → Market chart: routes
- Session context → Browser storage: reads/writes
- API server → Auth routes: mounts
- API server → Trade routes: mounts
- API server → Analytics route: mounts
- Auth routes → Auth handlers: dispatches
- Auth handlers → User records: reads/writes
- Trade routes → Auth middleware: guards
- Trade routes → Trade handlers: dispatches
- Auth middleware → User records: loads user
- Trade handlers → Trade records: reads/writes
- API server → MongoDB: connects
- Market chart → API server: requests trades
- Market chart → Binance market API: fetches market data
