Your whole season in one request.
This app is a demo of the longitudinal-data functionality in SweatStack. One http request to the endpoint gives you a year of 1 Hz power/speed and heart rate, as a single Parquet file. The browser parses it; nothing server-side touches the data.
In this demo, your browser parses the parquet file; nothing server-side touches the data. This whole thing is one static HTML file. No server, no database,
no build step. It's published to SweatStack Pages with a single
sweatstack page deploy. SweatStack longitudinal data does the heavy lifting; 100% client-side does the rest.
Below: your last 12 months.
Under the hood
The whole plot is a single request. Auth is SweatStack Connect (OAuth2 PKCE), then:
curl -G https://app.sweatstack.no/api/v1/activities/longitudinal-data \
-H "Authorization: Bearer $TOKEN" \
-d sport=cycling -d metrics=power -d metrics=heart_rate \
-d start=2025-06-30 \
--output year.parquet
You get back a snappy-compressed Parquet file, a year of 1 Hz samples. The page hands it straight to DuckDB-WASM and does the filtering, downsampling and counting in SQL, all in the browser. No backend, no round-trips.