Use activities from Strava to challenge your fellow athletes in a friendly competition.
Simply sign in with your Strava account and your activities will be automatically synced.
Tevling uses Strava as it's identity provider, requiring only email and name of the contestant.
Parts of activity information necessary to take part in challenges are stored in Tevling's database.
The user will be asked to allow Tevling access to workout data from Strava. Once access is granted, all new workout data will be pushed from Strava to Tevling through a webhook subscription.
The app is published as a Docker container and can be run standalone or in a kubernetes cluster.
docker run --volume /tmp/tevling:/app/storage -p 8080:8080 ghcr.io/veloek/tevling \
--env STRAVACONFIG__CLIENTID=${STRAVA_CLIENTID} \
--env STRAVACONFIG__CLIENTSECRET=${STRAVA_CLIENTSECRET} \
--env STRAVACONFIG__REDIRECTURI=${STRAVA_REDIRECTURI} \
--env STRAVACONFIG__SUBSCRIPTIONID=${STRAVA_SUBSCRIPTIONID} \
--env STRAVACONFIG__VERIFYTOKEN=${STRAVA_VERIFYTOKEN}
A Helm chart is available in the helm directory. To install, clone the repo and run:
helm upgrade tevling --install --namespace tevling --create-namespace helm \
--set-string strava.clientId=${STRAVA_CLIENTID} \
--set-string strava.clientSecret=${STRAVA_CLIENTSECRET} \
--set-string strava.redirectUri=${STRAVA_REDIRECTURI} \
--set-string strava.subscriptionId=${STRAVA_SUBSCRIPTIONID} \
--set-string strava.verifyToken=${STRAVA_VERIFYTOKEN}
This will configure a deployment, a secret and a pvc in addition to a service/ingress for incoming
traffic. See configuration options in values.yaml.
The app is based on ASP.NET using the Blazor framework. Simplicity is highly valued to have the app maintainable as it's not anybody's dayjob.
Debugging should work out of the box in Visual Studio or VS Code (with C# extensions), but to simply
build (and run) the app only the .NET 10 SDK is required. Use dotnet watch to detect changes.
dotnet run --project Tevling/Tevling.csproj
Bug reports and PRs are very welcome!
Releases are automatically deployed once a new version tag is detected. Tevling strives to follow semantic versioning and version numbers should be bumped accordingly.
All tags should be annotated and use the tag name as title. The body should consist of a list of changes; fixes, additions, removals, etc. See older version tags for inspiration.
$ git tag -a v1.2.3
v1.2.3
- Added this awesome new feature
- Fixed issue where challenges never end
- Removed exessive filtering options
GNU GPLv3 or later.
Copyright © 2026 - Tevling Contributors