Where this data comes from
| Asset | Source | How | What can go wrong |
|---|---|---|---|
| Bitcoin, Ethereum, Solana | CoinGecko | straight from the browser, no key | rate limiting under load |
| Gold, silver | CoinGecko — PAXG, KAG | via tokens backed by 1 oz of metal | the token can deviate slightly from the metal's spot price |
| EUR/USD | Frankfurter (ECB reference rates) | straight from the browser | the ECB publishes once a day — no intraday window |
| Stocks and ETFs | Yahoo Finance (Stooq fallback) | via an own function /api/quote on Cloudflare Pages | the route does not exist in local preview; Yahoo can change its interface without notice |
| Luka Koper, Triglav | manual, LJSE | last verified close | not live and does not refresh |
Why a proxy for stocks. Yahoo and Stooq send no Access-Control-Allow-Origin header, so the browser rejects them. The function functions/api/quote.js runs on Cloudflare's server, where that rule does not apply, and returns normalised JSON. Responses are cached (5 minutes for the daily window, 60 minutes for longer ones). The code is on GitHub.