A cross-platform desktop GUI application for viewing and analyzing historical data for Indian stocks from NSE (National Stock Exchange).
- Cross-Platform GUI: Native desktop application built with Rust and egui - works on Linux, Windows, and macOS
- Fully Local: All data stored and processed locally - no cloud dependencies or privacy concerns
- NSE Stock List Management: Download and maintain up-to-date list of NSE stocks with ISIN mapping
- Historical Data Downloader: Automated BhavCopy data downloader from NSE archives with progress tracking
- Stock Data Grid: Virtual scrolling table displaying all stocks with:
- Real-time filtering by price range
- Configurable date ranges (Last 5 Days, Last 30 Days, Last 52 Weeks)
- Key metrics: LTP (Last Traded Price), % Change, Volume, High/Low ranges
- Color-coded price changes (green for gains, red for losses)
- Efficient rendering for thousands of stocks
- Interactive Stock Charts:
- Historical price visualization with egui_plot
- Adaptive date formatting based on time range
- Hover tooltips showing exact price and date
- Clean, responsive interface
- Smart Search: Fast symbol search with caching for quick access to any stock
- Recently Viewed: Quick access sidebar for your most recent stock views
- SQLite Database: Efficient local storage with proper indexing and foreign key constraints
- Modern Rust architecture with workspace structure
- Async download with progress reporting
- Automatic data validation and integrity checks
- Configurable data directory in user config folder
- Rate-limited API requests to respect NSE servers
- CSV parsing with flexible field handling for varying NSE formats
Download the latest release for your platform from the GitHub Releases page.
Linux:
# Download the latest release
wget https://github.com/brainless/Indistocks/releases/latest/download/indistocks-linux-x86_64.tar.gz
# Extract
tar -xzf indistocks-linux-x86_64.tar.gz
# Run
./indistocksWindows:
Download indistocks-windows-x86_64.zip, extract, and run indistocks.exe
macOS: Coming soon
- Rust toolchain (2021 edition or later)
- Display server (X11 or Wayland on Linux)
# Clone the repository
git clone https://github.com/brainless/Indistocks.git
cd Indistocks
# Build release binary
cargo build --release
# Run
cargo run --release- Download NSE Stock List: Go to Settings (⚙ icon) and click "Download NSE List" to get the current list of NSE stocks
- Download Historical Data: Click "Download BhavCopy Data" to fetch historical stock prices
- Data downloads from yesterday backwards for ~365 days
- Progress is shown in real-time
- Downloaded data is automatically processed and indexed
- Search for Stocks: Use the search bar at the top to find any NSE stock by symbol
- View Stock Charts: Click any stock symbol to view its historical price chart
- Browse All Stocks: Navigate to the "Stocks" page to see the complete grid with filters
- Filter by Price: Enter min/max price range to narrow down stocks
- Change Time Range: Select different ranges (5 days, 30 days, 52 weeks) to see different metrics
- Database:
~/.config/Indistocks/db.sqlite3(Linux) or equivalent on Windows/Mac - Downloads:
~/.config/Indistocks/downloads/organized by year/month - Logs:
~/.config/Indistocks/logs/
Indistocks/
├── indistocks-gui/ # GUI application (eframe/egui)
│ └── src/
│ ├── main.rs # Entry point
│ ├── app.rs # Application state
│ └── ui/ # UI components
│ ├── main_content.rs # Chart viewer
│ ├── stocks.rs # Data grid
│ ├── sidebar.rs # Recently viewed
│ ├── settings.rs # Settings page
│ └── top_nav.rs # Search bar
└── indistocks-db/ # Database library
└── src/
├── db/ # Database operations
│ ├── schema.rs # Table definitions
│ ├── operations.rs # CRUD operations
│ └── downloads.rs # Download manager
└── models/ # Data models
This project is built on the shoulders of giants. Special thanks to:
- Rust - The systems programming language that makes this possible
- egui & eframe - Immediate mode GUI framework for beautiful cross-platform UIs
- egui_plot - Plotting library for interactive charts
- SQLite & rusqlite - Embedded database for local data storage
- reqwest - HTTP client for downloading NSE data
- tokio - Async runtime for concurrent operations
- csv - CSV parsing for NSE data files
- zip - ZIP archive extraction
- chrono - Date and time handling
- serde - Serialization framework
- directories - Platform-specific directory paths
- clap - Command-line argument parsing
- Claude Code - Agentic coding assistant that helped with architecture, implementation, and testing
- OpenCode - Agentic coding tool for development assistance
- NSE India - National Stock Exchange of India for historical market data
See LICENSE file for details.



