AGPL-3.0Open source
Libre, des formules jusqu'aux serveurs
Chaque ligne d'OpenAthlete est publique sur GitHub : les calculs de charge, les connecteurs de montres, les prompts de l'IA. Utilisez nos serveurs, ou installez-le sur les vôtres en une commande.
/**
* Banister TRIMP for `minutes` spent at `hr`:
* minutes × HRr × y × e^(k × HRr),
* with HRr = (HR - HRrest) / (HRmax - HRrest)
*/
function trimpAt(hr, minutes, hrMax, hrRest, gender) {
const hrFraction = (hr - hrRest) / (hrMax - hrRest);
if (hrFraction <= 0) {
return 0;
}
const { k, y } = getTrimpCoefficients(gender);
return minutes * hrFraction * y * Math.exp(k * hrFraction);
}La licence
L'AGPL-3.0, en clair
Une licence libre avec une règle de plus pour les logiciels utilisés en réseau. Voici ce qu'elle implique pour vous.
Vous pouvez
- L'utiliser pour tout : votre entraînement, votre activité de coach, votre club.
- Lire et étudier chaque ligne.
- Le modifier à votre goût.
- Faire tourner votre propre copie, pour vous ou pour d'autres.
La licence demande
- Si des personnes utilisent une version modifiée à travers le réseau, proposez-leur son code source.
- Partagez vos modifications sous la même licence.
- Conservez les mentions de copyright et de licence.
Le faire tourner sans modification pour votre club n'ajoute aucune obligation. Ceci est un résumé, pas un avis juridique : le texte complet est sur gnu.org.
Pourquoi c'est important
Votre historique ne devrait pas dépendre du business plan de quelqu'un d'autre
Mars 2024
Today's Plan, propriété de Specialized, ferme. Ses coachs et ses athlètes doivent changer de plateforme.
Juillet 2026
Garmin rachète TrainingPeaks. La plateforme de coaching indépendante la plus connue appartient désormais à un fabricant de montres.
Avec OpenAthlete
Le code est public. Si nous arrêtions demain, n'importe qui pourrait le relancer le lendemain, et votre export contient tout votre historique.
Auto-hébergement
Votre instance en trois étapes
Pour un club, un labo, une activité de coach, ou juste pour vous.
- 1
Un serveur avec Docker
N'importe quelle machine Linux avec Docker et son extension Compose. 1 Go de RAM suffit : l'ensemble consomme environ 250 Mo au repos. Faites pointer le DNS de votre domaine vers elle.
- 2
Lancez le script d'installation
Il télécharge le fichier Compose, écrit un .env avec des secrets neufs, récupère les images et démarre PostgreSQL, Redis, l'API, l'application web et Caddy pour le HTTPS automatique.
- 3
Créez le premier compte
Ouvrez votre domaine. Le premier compte est le vôtre ; ensuite, l'inscription se fait sur invitation : invitez vos athlètes ou vos coachs. Relancez le script pour mettre à jour.
- Gardez une copie du fichier .env : sans HASH_PEPPER, aucun mot de passe ne peut être vérifié.
$ curl -fsSL https://raw.githubusercontent.com/openathleteorg/openathlete/main/scripts/install.sh | sh -s -- --domain your.domain
Created .env with new secrets.
✔ postgres Started
✔ redis Started
✔ api Started
✔ web Started
✔ caddy HTTPS ready
→ https://your.domainFonctionne d'emblée
- Toutes les fonctionnalités, sans limite d'athlètes ni paiement
- La synchro COROS, qui n'a besoin que de votre adresse
- L'import FIT, GPX et TCX, et l'API d'import d'activités
- Le serveur MCP pour Claude, ChatGPT et d'autres agents
- Les clés d'IA des utilisateurs, et des modèles locaux comme Ollama
Désactivé tant que vous ne le réglez pas dans .env
- E-mail : invitations, mot de passe oublié
SMTP_HOST · BREVO_API_KEY - Synchro Strava, Garmin, Polar et Suunto, avec un compte développeur chez chaque marque
STRAVA_* · GARMIN_* · POLAR_* · SUUNTO_* - Connexion unique
OIDC_ISSUER · OIDC_CLIENT_ID - IA sur les clés de l'instance, avec un budget mensuel par utilisateur
OPENAI_API_KEY · AI_HOSTED_MONTHLY_BUDGET_USD - Estimation de charge par l'IA pour les séances prévues
ENABLE_TRAINING_LOAD_ESTIMATION - Statistiques d'audience et rapports d'erreurs
POSTHOG_PROJECT_TOKEN - La facturation, dont vous n'avez pas besoin
STRIPE_*
Vie privée
Une instance auto-hébergée ne nous envoie rien
Pas de statistiques, pas de rapports d'erreurs, aucun appel vers nous. Un test de bout en bout ouvre l'application auto-hébergée dans un vrai navigateur et échoue si elle fait la moindre requête vers un tiers.
Deux appels extérieurs restent, par choix : les tuiles de carte OpenStreetMap dans le navigateur, et la météo Open-Meteo depuis votre serveur.
Transparence
Chaque chiffre a sa formule
Dans l'application, chaque métrique dit ce qu'elle est et où sont ses limites. Dans le code, vous voyez exactement comment elle est calculée.
Contribuer
Il y a de la place pour vous
Code
Prenez une « good first issue », ou corrigez ce qui vous agace. L'installation de développement est documentée.
Good first issuesTraductions
L'application parle anglais, français, italien, espagnol et portugais du Brésil. Corrigez une tournure maladroite ou apportez une nouvelle langue.
Fichiers de traductionRetours
Dites-nous ce qui manque, ce qui casse, ce pour quoi vous paieriez. C'est sur Discord que la feuille de route se discute.
Rejoindre le DiscordFinancement
Financé par ses utilisateurs, et personne d'autre
Ni investisseurs, ni publicité, ni données revendues. Les Supporters (5 € par mois ou 50 € par an) et les cafés ponctuels paient les serveurs, l'IA et le temps de développement.
Construit avec NestJS, PostgreSQL et pgvector, Redis et BullMQ, React 19 et Vite, Capacitor et Next.js. Images Docker sur GHCR pour amd64 et arm64.
Vous préférez qu'on l'héberge ?
Le même code, sur nos serveurs en France. Gratuit, avec Supporter si vous voulez l'IA sur nos clés ou plus de cinq athlètes.
Gratuit pour toujours. Sans carte bancaire.