What is Endurain?
Endurain is a self-hosted fitness tracking service designed to give users full control over their data and hosting environment. Built with:
- Frontend: Vue.js, Notivue and Bootstrap CSS
- Backend: Python FastAPI, Alembic, SQLAlchemy, stravalib and python-garminconnect for Strava and Garmin Connect integration, gpxpy and fitdecode for .gpx and .fit file import respectively
- Database: MariaDB or PostgreSQL for efficient data management
- Observability: Jaeger for basic tracing and monitoring
To deploy Endurain, a Docker image is available, and a comprehensive example can be found in the "docker-compose.yml.example" file provided in the project repository. Configuration is facilitated through environment variables, ensuring flexibility and ease of customization.
Developer's Note
As a non-professional developer, my journey with Endurain involved learning and implementing new technologies and concepts, with invaluable assistance from ChatGPT. The primary motivation behind this project was to gain hands-on experience and expand my understanding of modern development practices. Second motivation is that I'm an amateur triathlete and I want to keep track of my gear and gear components usage.
If you have any recommendations or insights on improving any aspect of Endurain, whether related to technology choices, user experience, or any other relevant area, I would greatly appreciate your input. The goal is to create a reliable and user-friendly fitness tracking solution that caters to the needs of individuals who prefer self-hosted applications. Your constructive feedback will undoubtedly contribute to the refinement of Endurain.
Features
Endurain currently supports:
- Multi-user functionality
- Admin and user profiles with adaptable interfaces
- Activity import via manual or bulk upload (.gpx and .fit files. .fit files are preferred)
- Strava integration for syncing activities and gear
- Garmin Connect integration for syncing activities, gear and body composition
- Activity feeds and statistics (week/month)
- Basic activity privacy settings
- Gear tracking (wetsuits, bicycles, shoes)
- User pages with stats and activity histories
- Follower features (view activities)
- Multi-language support
- Dark/light theme switcher
- Third-party app support
- Weight logging
Planned Features
Upcoming features (in no particular order):
- Live tracking
- Default gear for activity types
- Gear component tracking (e.g., track when components like bike chains need replacing)
- Activity comments and likes
- Notification system
- Potential ActivityPub integration
Sponsors
A huge thank you to the project sponsors! Your support helps keep this project going.
Consider sponsoring Endurain on GitHub to ensure continuous development.
Contributing
Contributions are welcomed! Please open an issue to discuss any changes or improvements before submitting a PR. Check out the Contributing Guidelines for more details.
License
This project is licensed under the AGPL-3.0 or later License.
Help Translate
Endurain has multi-language support, and you can help translate it into more languages via Crowdin.
Currently supported in:
- Catalan by @rubenixnagios
- German by @ThreeCO
- French (FR)
- Portuguese (PT)
- English (US)