João Vitória Silva 5d32f8c649 Refactor server settings module and improve API docs
Refactored the server settings module for better structure and clarity, including splitting base and public schemas, updating SQLAlchemy model to use Mapped/mapped_column, and improving type hints and docstrings. Enhanced API endpoints with detailed documentation, added file validation for login photo upload, and improved error handling. The __init__.py now provides explicit exports for all key components.
2026-01-06 22:29:54 +00:00
2026-01-05 11:13:00 +00:00
2025-05-03 23:07:45 +01:00
2025-12-03 22:24:47 +00:00

Endurain

License GitHub release GitHub stars Trademark Policy

A self-hosted fitness tracking service
Visit Endurain's Mastodon profile and Discord server.

Endurain Screenshot

🚀 Try the Demo

Experience Endurain without installation:

Demo URL: https://demo.endurain.com

  • Username: admin
  • Password: admin
  • Reset Schedule: Daily at midnight (Europe/Lisbon timezone)

⚠️ Note: The demo environment resets every day. Do not store important data.

Table of Contents

What is Endurain?

Endurain is a self-hosted fitness tracking service designed to give users full control over their data and hosting environment. It's similar to Strava but focused on privacy and customization. Built with:

  • Frontend: Vue.js, Notivue and Bootstrap CSS
  • Backend: Python FastAPI, Alembic, SQLAlchemy, Apprise, stravalib and python-garminconnect for Strava and Garmin Connect integration, gpxpy, tcxreader and fitdecode for .gpx, .tcx and .fit file import respectively
  • Database: PostgreSQL for efficient data management
  • Observability: Jaeger for basic tracing and monitoring
  • Integrations: Supports Strava and Garmin Connect. Manual upload of activities using .gpx, .tcx and .fit files are also supported

To deploy Endurain, a Docker image is available, and a comprehensive example can be found in the "docker-compose.yml.example" file provided. Configuration is facilitated through environment variables, ensuring flexibility and ease of customization.

For more information please see the Endurain's documentation.

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.

Help Translate

Endurain has multi-language support, and you can help translate it into more languages via Crowdin.

License

This project is licensed under the AGPL-3.0 License - see the LICENSE file for details.

Trademark Notice

Endurain® is a trademark of João Vitória Silva.

You are welcome to self-host Endurain and use the name and logo, including for personal, educational, research, or community (non-commercial) use.
Commercial use of the Endurain name or logos (such as offering paid hosting, products, or services) is not permitted without prior written permission.

See TRADEMARK.md for full details.

Built with ❤️ from Portugal | Part of the Endurain ecosystem
Description
No description provided
Readme AGPL-3.0 152 MiB
Languages
Python 69.4%
Vue 26.2%
JavaScript 3.4%
TypeScript 0.8%