Project

Ticker Tracker

September 9, 2024

pythonflaskjavascriptfinanceapidata-visualizationautomation
tickertracker.info/

Ticker Tracker on GitHub

Overview

Most stock dashboards are either paywalled, ad-cluttered, or running someone else’s cloud infrastructure. Ticker Tracker is a locally-run Python/Flask app that pulls live market data in parallel, renders interactive charts, and optionally fires Pushbullet alerts the moment a ticker hits your target price — all in a single, self-contained codebase you run on your own machine.

The focus is clarity: a high-contrast dark-mode table, real-time bar and multi-line charts, and a favorites system — without noise.

View Source on GitHub


What It Does

Ticker Tracker fetches live prices for a configurable list of symbols via the yfinance API, running all requests concurrently through a thread pool. Results feed into a dashboard with two chart views (bar chart for current prices, multi-line chart for 30-day history) and a sortable data table. A market status indicator shows whether the US market is currently open, closed, pre-market, or after-hours — so you always know the context of the data you’re looking at.


Core Features

Real-Time Dashboard

  • Parallel price fetching via ThreadPoolExecutor (8 workers) — no waiting for sequential API calls
  • Bar chart for current prices across all tracked symbols
  • Multi-line 30-day history chart with per-ticker HSL color coding
  • High-contrast dark-mode table with alternating row stripes and hover states
  • Market status indicator: Open / Closed / Pre-Market / After-Hours
  • Add and remove tickers directly from the UI without touching the code
  • Live search/filter bar to quickly locate symbols in large watchlists

Price Alerts (Optional)

  • Pushbullet integration fires a notification the moment a tracked symbol crosses your target price
  • Configured via environment variable — no API key baked into the source

Data Pipeline

  • yf.Ticker.history() for recent, 1-year, max, and 30-day windows
  • 52-week and all-time highs/lows computed from High/Low columns
  • 30-day closing price history extracted as dates + prices array for the chart

Tech Stack

LayerTechnology
BackendPython 3.7+ / Flask
FrontendVanilla JavaScript, Chart.js, HTML5, CSS3
Datayfinance
AlertsPushbullet API
ConcurrencyThreadPoolExecutor

Design Decisions

Local-only by default. This runs on your machine, against your watchlist, with no account required. The only outbound calls are to the market data API and (optionally) Pushbullet.

Parallel fetching. Sequential API calls for a 20-ticker watchlist would mean 20+ round trips in series. The thread pool collapses that into a single wait across all tickers simultaneously.

Chart.js over a charting library. Keeps the frontend dependency footprint minimal while still producing clean, interactive visualizations.