Gatsby plugin to use Strava as a data source
Requires Node 20 or later.
- Download
gatsby-source-stravafrom the NPM registry:
yarn add gatsby-source-stravaThe package needs 3 .env variables with the following format to work:
STRAVA_CLIENT_ID=2845
STRAVA_CLIENT_SECRET=c3d62caed3sjf4vdjsb096d010d81f52a17ac5
STRAVA_TOKEN={"access_token":"ya...J0","refresh_token":"1..mE","expires_at":1581439030,"expires_in":21600}gatsby-source-strava expose a script to make the generation easier.
Open a terminal at the root of your project and type:
gatsby-source-strava-token- Add the plugin in your
gatsby-config.jsfile
require("dotenv").config()
module.exports = {
plugins: [
{
resolve: "gatsby-source-strava",
options: {
stravaClientId: process.env.STRAVA_CLIENT_ID,
stravaClientSecret: process.env.STRAVA_CLIENT_SECRET,
stravaToken: process.env.STRAVA_TOKEN,
},
},
],
}That's it!
For advanced configuration, please read options documentation.
The plugin creates a StravaAthlete node and one StravaActivity node per
activity, with a coordinates field ready for a map. With the withRoutes
option, it also creates one StravaRoute node per route, with the same
coordinates field. Their GraphQL types are declared by the plugin, so your
queries work even before the first activity is fetched.
Your history is fetched once and kept in a .strava directory next to your
gatsby-config.js, not in the Gatsby cache. A build only fetches the activities
you recorded since the previous one, even after a gatsby clean or on a fresh
continuous integration checkout.
Strava allows 100 requests every 15 minutes and 1000 a day. Read the rate limits documentation before enabling options that fetch more of every activity.
| Command | What it does |
|---|---|
gatsby-source-strava-token |
Generates the token the plugin needs |
gatsby-source-strava-activity <id> |
Fetches one activity again, with as much detail as asked |
gatsby-source-strava-activities |
Deletes the activities gone from Strava, adds the missing ones |
- Options, everything you can configure
- Store, where your activities live and when they are fetched
- Routes, your Strava routes, private ones included
- Rate limits, what Strava allows and how to handle it
- Token, generating and refreshing it
- Fetching an activity again, to add details or pick up an edit
- Syncing the activities, to drop deleted activities and add uploaded again ones
- Creating pages, one page per activity
- ⇄ Pull/Merge requests and ★ Stars are always welcome.
- For bugs and feature requests, please create an issue.
See CHANGELOG
This project is licensed under the MIT License - see the LICENCE file for details
