Run Runnr locally in about 10-15 minutes.
- Node.js 20+
- npm
- Strava account
- PostgreSQL database (local Docker, local install, or cloud)
git clone https://github.com/bjarkeef/runnr.git
cd runnr
npm installCopy-Item .env.example .env.localcp .env.example .env.localOpen .env.local and set the required values:
DATABASE_URLDIRECT_URLSTRAVA_CLIENT_IDSTRAVA_CLIENT_SECRETSTRAVA_REDIRECT_URI
For database choices and connection string examples, see database-setup.md.
Optional variables:
OPENROUTESERVICE_API_KEY(required only for route generation)NEXT_PUBLIC_ROUTE_PLANNER_LATNEXT_PUBLIC_ROUTE_PLANNER_LNG
- Log in at Strava
- Open API settings: https://www.strava.com/settings/api
- Create an app with these values:
Application Name:
RunnrCategory:TrainingWebsite:http://localhost:3000Authorization Callback Domain:localhost - Copy Client ID and Client Secret into
.env.local
For local development, keep:
STRAVA_REDIRECT_URI=http://localhost:3000/api/auth/callbacknpm run db:migrateAlternative for rapid local schema iteration:
npm run db:pushnpm run devThen open http://localhost:3000.
- Click Connect with Strava
- Approve permissions
- Wait for initial sync (or trigger sync in Settings)
- Check Stats page for historical runs
- Prisma connection error: verify
DATABASE_URLandDIRECT_URL, then confirm DB is reachable. - OAuth callback mismatch: ensure
STRAVA_REDIRECT_URIexactly matches your Strava app callback. - Route planner unavailable: add
OPENROUTESERVICE_API_KEY.