Stiq is a high-density, browser-based stock quote tracker for tracking global markets and individual quotes.
This project is licensed under the GNU Affero General Public License v3.0.
- High-Density UI: Compact financial layout designed for maximum information at a glance.
- Market Overview: Top-bar tracking of global indices, bond yields, currencies, and commodities.
- Dynamic Watchlist: Add and remove stock quotes instantly.
- Sparklines: 30-day historical trend charts for every quote in your list.
- Simple Build: Built with Python, HTMX, and Alpine.js. No
npmor complex JS build tools. - Real-Time Push Architecture: Zero-flicker UI powered by a Server-Sent Events (SSE) backend.
- Backend: Python (asyncio, aiohttp, Server-Sent Events)
- Data Provider: Hybrid provider engine (
yahoo,yfinance, ortiingoWebSockets) - Frontend: HTMX + Alpine.js
- Styling: Tailwind CSS v4 (Standalone CLI)
- Charts: ApexCharts
- Python >=3.13.13
- uv (Recommended Python package manager)
-
Clone the repository:
git clone https://github.com/spudone/stiq.git cd stiq -
Run the setup: This will synchronize Python dependencies and download the correct Tailwind CSS standalone binary for your OS.
make setup
-
Build the CSS:
make build
(Run
make watchin a separate terminal to auto-compile as you edit). -
Launch the app: Start the application. The build system will automatically sniff your
config.jsonand install only the required library extras.make run
Stiq dynamically multiplexes data pipelines. On first launch, a configuration file is generated at ~/.stiq/config.json. You can edit this file to mix and match data providers seamlessly.
{
"market_provider": "yahoo",
"quotes_provider": "yahoo",
"history_provider": "yahoo",
"poll_interval_secs": 300,
"use_rate_limit": true,
"watchlist": [
"AAPL",
"MSFT"
]
}You may assign any of the following to market_provider, quotes_provider, or history_provider:
"yahoo": Zero-dependency web scraper. The recommended default for all pipelines."yfinance": Uses theyfinancePython library. A reliable alternative fallback."tiingo": Uses the Tiingo IEX WebSocket API for instant real-time quotes, and REST for history.- Note: Requires
TIINGO_API_KEYto be exported in your environment. - Note: Tiingo does not provide global market indices; it's recommended to leave
market_provideras"yahoo"even when using Tiingo for quotes.
- Note: Requires
To package Stiq as a standalone executable (it will bundle whichever dependencies are specified in your current config.json):
make distTo clean up build artifacts (dist, build, .venv):
make clean(To also wipe the downloaded Tailwind binary, use make dist-clean).