← Back to dashboard View source on GitHub →

Self-host your own Ascent

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.

Just want to use it? You don't need to install anything — the hosted version at ascent-analytics.vercel.app is free and ready to go. This guide is only for people who want to run their own copy.

0 What you'll need

1 Fork the repository

Open the repo and click Fork (top-right) to copy it into your own GitHub account:

Fork the repo on GitHub

2 Create a Strava API application

This gives your copy permission to read your Strava data through Strava's official login.

  1. Go to strava.com/settings/api and create an application.
  2. Fill in any name (e.g. "My Ascent"), category, and website.
  3. For Authorization Callback Domain, enter localhost for now — you'll update it in Step 5 once you know your deploy URL.
  4. After creating it, copy your Client ID and Client Secret — you'll paste them into Vercel next.
Keep the Client Secret private. It lives only in your Vercel project settings and is never exposed in the browser.

3 (Optional) Set up Supabase caching

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:

  1. Create a free project at supabase.com.
  2. In Project Settings → API, copy the Project URL and the anon public key.

If you skip this step, just leave the two SUPABASE_* variables blank in the next step.

4 Deploy to Vercel

  1. Go to vercel.com/new and import your forked repository.
  2. Vercel auto-detects the build settings from vercel.json — leave them as-is.
  3. Before deploying, open Environment Variables and add the following:
NameValue
STRAVA_CLIENT_IDFrom Step 2
STRAVA_CLIENT_SECRETFrom Step 2
SUPABASE_URLFrom Step 3 (or leave blank)
SUPABASE_ANON_KEYFrom Step 3 (or leave blank)

Click Deploy. After a minute you'll get a live URL like your-app.vercel.app.

5 Point Strava back to your URL

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. 🎉

6 (Optional) Run it locally

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.

7 Troubleshooting

Questions or found a bug? Open an issue on GitHub. If Ascent is useful to you, a ⭐ on the repo is appreciated.

← Back to dashboard