This project tracks issuers of Electronic Money Tokens (EMTs) and Crypto-Asset Service Providers (CASPs) under the MiCAR framework. The dashboard is a simple static site that reads data from a public Google Sheets document and visualises it using HTML and Tailwind CSS.
update-data.js downloads a CSV export of the ESMA registers from Google Sheets, ensuring the dashboard reflects the latest EMT and CASP information published by the regulator.
The script parses the CSV, converts each row into a JavaScript object and then rewrites index.html with the new data and a human‑friendly source date.
The script reads CSV locations from the CSV_URL and DATE_URL environment variables. If they are not set, default URLs pointing to the public Google Sheet are used.
- Set
GOOGLE_API_KEY(and optionallyGOOGLE_SHEET_ID) to allowupdate-data.jsto read the registers via the Sheets API before falling back to CSV exports. The default sheet ID already targets the shared tracker. - The script first queries the
snapshot!A1:B3range (gid353293525). If neither the EMT nor CASPs snapshot date changed since the last run, cached JSON payloads from thedata/directory (emts.json,casps.json,non-compliant.json) are reused to avoid unnecessary API calls. - When the snapshot date changes—or when cached data is missing—the EMT (
Jurisdiction!A1:J50, gid0), CASPs (CASPs!A1:F150, gid1275732000), and non-compliant (Non Compliant!A1:E150, gid409089345) ranges are fetched, converted, written back toindex.html, and persisted underdata/for GitHub Actions or local debugging. - All API requests include exponential backoff and structured error logging; if the API returns an error or the key is not available, the previous CSV download logic is used as a fallback automatically.