gloticker · macro indicators Chrome extension

Period  — 

I built it because checking market indicators meant visiting 4–5 sites every time. I ran separate FastAPI collection and Spring Boot streaming servers on a home server.

300+ cumulative users across 7+ countries

Java 17Spring BootPythonFastAPIRedis 7.2ReactProxmoxDockerNginx Proxy ManagerJenkinsPrometheusGrafana

  • Live index quotes: Nasdaq, S&P 500, Dow Jones, Russell 2000, 20‑year Treasury, VIX, Fear and Greed Index
  • Stock quotes: the Magnificent 7 (Apple, Nvidia, Microsoft, Amazon, Google, Meta, Tesla)
  • Crypto quotes: Bitcoin, Ethereum, Solana, dominance
  • Exchange rates: Dollar Index and the won against the dollar, euro, yuan and yen
  • SSE live updates over a Redis message queue
  • Market analysis with the ChatGPT API
  • 30‑day daily candle charts
  • Settings for hidden items, theme and language

Getting blocked while scraping

Problem
Frequent yfinance calls caused 429 errors, and some servers identified the client as a bot and returned 401 responses. I needed a call rate that kept prices fresh without getting blocked.
Solution
Forum reports suggested about one call per second, so I randomized call intervals between 1 and 1.2 seconds. Each call carried a valid random header so the scraper was not flagged as a bot. Values that change slowly, such as the Fear and Greed Index, dominance and exchange rates, update once a minute.

API requests piling up on every popup

Problem
Opening the extension popup called the per‑symbol price and change, chart, SSE subscription and analysis APIs at once. The home server needed protection from the resulting load.
Solution
Redis caches the latest data snapshot and sends it in one response, and the extension stores the latest data and its arrival time in local storage. One scraping round takes 23 seconds on average, so if the last update arrived within 20 seconds, the popup only subscribes to SSE. Charts use 30 days of daily candles, so they load once at market close, and Bucket4j limits each client to 6 requests per 10 seconds.

Architecture

gloticker deployment diagram: Nginx, monitoring, Jenkins, and collection and streaming servers on Proxmox
Price collection and streaming servers run on Proxmox.
gloticker cover with the logo and name on a black background
gloticker logo cover
gloticker home screen with indices, stocks and mini charts
gloticker settings screen for picking stocks, crypto and exchange rates
gloticker with the AI market analysis panel open