Pick a stack (Node.js + Express, Next.js route handlers or Python + FastAPI) and the vendors you integrate (Oura, WHOOP, Polar AccessLink, Strava and Wahoo), and download a project skeleton as a .zip built in your browser: an OAuth start and callback route per vendor with a state check and PKCE where the vendor documents it, a token-store interface with an in-memory stand-in, a webhook endpoint that answers each vendor’s handshake and checks its documented signature or token, a .env.example and a README. Every endpoint and header comes from a page this site already sources, and every combination is compiled and run in the site’s tests.
How the templates are tested
scripts/starter-scaffold.test.mjs generates every stack with each vendor alone and with all five. The Express skeleton passes node --check, is started on a free port, and is driven over HTTP: the authorize redirect, the code exchange against a fake token endpoint, a single-use state, and each vendor’s webhook as the webhook verifier builds it from the vendor’s own example, accepted unchanged and refused when tampered with. The Next.js skeleton passes tsc --noEmit in strict mode against Next.js and Node types, and its webhook module runs the same cases. The FastAPI skeleton passes python -m py_compile, and its standard-library webhook module runs the same cases. The ZIP is read back by the site’s own ZIP reader and by Python’s zipfile.
What it does not do: the stores keep tokens in memory, the start route takes the user id as a query parameter, and the event handler only logs. The README in each download says what to replace, and the cookbook has tested code for each: token encryption at rest, refresh rotation and a replay-safe receiver.