Ascent is free and open source. This guide walks you through deploying your own private copy on Vercel — it takes about 10 minutes and costs nothing. No coding required; you'll just click through a few sign-ups and paste in some keys.
Open the repo and click Fork (top-right) to copy it into your own GitHub account:
This gives your copy permission to read your Strava data through Strava's official login.
localhost for now — you'll update it in Step 5 once you know your deploy URL.Ascent works fine without this — activities are cached in your browser. Supabase only adds a shared cloud cache so you don't re-fetch when switching devices. To enable it:
If you skip this step, just leave the two SUPABASE_* variables blank in the next step.
vercel.json — leave them as-is.| Name | Value |
|---|---|
STRAVA_CLIENT_ID | From Step 2 |
STRAVA_CLIENT_SECRET | From Step 2 |
SUPABASE_URL | From Step 3 (or leave blank) |
SUPABASE_ANON_KEY | From Step 3 (or leave blank) |
Click Deploy. After a minute you'll get a live URL like your-app.vercel.app.
Return to strava.com/settings/api and set Authorization Callback Domain to your Vercel domain — just the host, no https:// and no path:
your-app.vercel.app
Save. That's it — open your URL, click Connect with Strava, and your dashboard is live. 🎉
To develop or test on your own machine:
git clone https://github.com/<your-username>/Ascent-Strava-Dashboard.git
cd Ascent-Strava-Dashboard
npm install
# create .env.local with your keys:
# STRAVA_CLIENT_ID=...
# STRAVA_CLIENT_SECRET=...
# SUPABASE_URL=...
# SUPABASE_ANON_KEY=...
node build.js # generates the dist/ folder
npx vercel dev # serves locally with the API routes
Add localhost to your Strava app's callback domain to test the login flow locally.
https://, no trailing slash).STRAVA_CLIENT_ID and STRAVA_CLIENT_SECRET in Vercel → Settings → Environment Variables, then redeploy.