How indubitablysrivathsan/candl works
candL is a self-hosted NSE end-of-day analytics product. Traders and analysts explore options, futures, stocks, market activity, participant positioning, and FII activity in a React terminal; the frontend requests analytics from FastAPI, which queries local DuckDB. On startup, the API invokes a sync that fetches NSE archives, processes them, and tracks per-date/file progress. The README documents these capabilities and the ingestion flow; sampled source confirms the API startup hook, options queries, and database layer, but not every route or pipeline call in detail.
Main entry points: App.jsx React app · client.js API client · startup_sync.py Startup sync · main.py FastAPI app
Components 18
Analytics interface
- React app
frontend/src/App.jsx - Options analysis
frontend/src/pages/Options.jsx - Futures analytics
frontend/src/pages/Futures.jsx - Stock analysis
frontend/src/pages/Stocks.jsx - Market overview
frontend/src/pages/Market.jsx - Participant flows
frontend/src/pages/Participants.jsx - FII analytics
frontend/src/pages/FII.jsx - API client
frontend/src/api/client.js
API service
- FastAPI app
api/main.py - Analytics routes
api/routes
Data ingestion
- Startup sync
pipeline/startup_sync.py - Archive downloader
pipeline/downloader.py - Data processors
pipeline/processors - Progress manifest
pipeline/manifest.py
Local data
- Query layer
api/db.py - DuckDB store
Other components
- Trader / analyst
- NSE archives
Connections 23
- Trader / analyst → React app: uses
- React app → Options analysis: routes to
- React app → Futures analytics: routes to
- React app → Stock analysis: routes to
- React app → Market overview: routes to
- React app → Participant flows: routes to
- React app → FII analytics: routes to
- Options analysis → API client: requests data
- Futures analytics → API client: requests data
- Stock analysis → API client: requests data
- Market overview → API client: requests data
- Participant flows → API client: requests data
- FII analytics → API client: requests data
- API client → FastAPI app: HTTP requests
- FastAPI app → Analytics routes: dispatches
- Analytics routes → Query layer: queries
- Query layer → DuckDB store: reads
- FastAPI app → Startup sync: runs at startup
- Startup sync → Archive downloader: downloads files
- Archive downloader → NSE archives: fetches archives
- Startup sync → Data processors: runs processing
- Data processors → DuckDB store: writes processed data
- Startup sync → Progress manifest: tracks progress