Vai al contenuto
OpenAthlete

AGPL-3.0Open source

Open source, dalle formule ai server

Ogni riga di OpenAthlete è pubblica su GitHub: i calcoli del carico di allenamento, i connettori degli orologi, i prompt dell'IA. Usa i nostri server, o installalo sui tuoi con un solo comando.

apps/api/src/modules/core/helpers/training-load.ts
/**
 * 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);
}
Come viene calcolato il carico di una seduta, direttamente dal repository

La licenza

AGPL-3.0, in parole semplici

Una licenza di software libero con una regola in più per il software usato tramite rete. Ecco cosa significa per te.

Puoi

  • Usarlo per qualsiasi cosa: il tuo allenamento, la tua attività di coaching, la tua società.
  • Leggere e studiare ogni riga.
  • Modificarlo a tuo piacimento.
  • Far girare una tua copia, per te o per altri.

La licenza chiede di

  • Se delle persone usano una versione modificata tramite rete, offrire loro il suo codice sorgente.
  • Condividere le tue modifiche con la stessa licenza.
  • Mantenere le note di copyright e di licenza.

Usarlo senza modifiche per la tua società non comporta alcun obbligo. Questo è un riassunto, non una consulenza legale: il testo completo è su gnu.org.

Perché è importante

Il tuo storico di allenamento non dovrebbe dipendere dal business plan di qualcun altro

Marzo 2024

Today's Plan, di proprietà di Specialized, chiude. I suoi allenatori e atleti devono cambiare piattaforma.

Luglio 2026

Garmin acquista TrainingPeaks. La piattaforma di coaching indipendente più nota ora appartiene a un produttore di orologi.

Con OpenAthlete

Il codice è pubblico. Se ci fermassimo domani, chiunque potrebbe farlo girare il giorno dopo, e la tua esportazione contiene tutto il tuo storico.

Self-hosting

La tua istanza in tre passaggi

Per una società sportiva, un laboratorio, un'attività di coaching, o solo per te.

  1. 1

    Procurati un server con Docker

    Qualsiasi macchina Linux con Docker e il suo plugin Compose. 1 GB di RAM basta: lo stack usa circa 250 MB a riposo. Punta il DNS del tuo dominio verso di essa.

  2. 2

    Esegui lo script di installazione

    Scarica il file Compose, scrive un .env con nuovi segreti, scarica le immagini e avvia PostgreSQL, Redis, l'API, la web app e Caddy per l'HTTPS automatico.

  3. 3

    Crea il primo account

    Apri il tuo dominio. Il primo account è il tuo; dopo, la registrazione è su invito, quindi invita i tuoi atleti o allenatori. Esegui di nuovo lo script per aggiornare.

  4. Conserva una copia del .env: senza HASH_PEPPER, nessuna password può essere verificata.
~
$ 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.domain

Funziona subito

  • Ogni funzionalità, senza limite di atleti e senza paywall
  • Sincronizzazione COROS, che richiede solo il tuo indirizzo
  • Importazione FIT, GPX e TCX, e l'API di importazione attività
  • Il server MCP per Claude, ChatGPT e altri agenti
  • Le chiavi IA degli utenti, e modelli locali come Ollama

Disattivato finché non lo imposti nel .env

  • Email: inviti, reimpostazione della passwordSMTP_HOST · BREVO_API_KEY
  • Sincronizzazione Strava, Garmin, Polar e Suunto, con un account sviluppatore presso ciascun marchioSTRAVA_* · GARMIN_* · POLAR_* · SUUNTO_*
  • Single sign-onOIDC_ISSUER · OIDC_CLIENT_ID
  • IA con le chiavi dell'istanza, con un budget mensile per utenteOPENAI_API_KEY · AI_HOSTED_MONTHLY_BUDGET_USD
  • Stima del carico con l'IA per le sedute pianificateENABLE_TRAINING_LOAD_ESTIMATION
  • Analytics e segnalazioni di errorePOSTHOG_PROJECT_TOKEN
  • Fatturazione, che non ti serveSTRIPE_*

Privacy

Un'istanza self-hosted non ci invia nulla

Niente analytics, niente segnalazioni di errore, niente chiamate a casa. Un test end-to-end apre l'app self-hosted in un vero browser e fallisce se fa anche una sola richiesta a terzi.

Restano due chiamate esterne, per scelta: le tessere della mappa da OpenStreetMap nel browser e il meteo da Open-Meteo sul tuo server.

Contribuisci

C'è posto anche per te

Codice

Scegli una «good first issue», o sistema quello che ti dà fastidio. L'ambiente di sviluppo è documentato.

Good first issues

Traduzioni

L'app parla inglese, francese, italiano, spagnolo e portoghese brasiliano. Correggi una frase goffa o porta una nuova lingua.

File di traduzione

Feedback

Dicci cosa manca, cosa non funziona, per cosa pagheresti. Su Discord si discute la roadmap.

Unisciti al Discord

Finanziamento

Pagato dai suoi utenti, da nessun altro

Nessun investitore, nessuna pubblicità, nessun dato venduto. I Supporter (5 € al mese o 50 € all'anno) e i caffè offerti una tantum pagano i server, l'IA e il tempo di sviluppo.

Costruito con NestJS, PostgreSQL con pgvector, Redis e BullMQ, React 19 e Vite, Capacitor e Next.js. Immagini Docker su GHCR per amd64 e arm64.

Preferisci che lo ospitiamo noi?

Stesso codice, sui nostri server in Francia. Gratis, con Supporter se vuoi l'IA con le nostre chiavi o più di cinque atleti.

Gratis per sempre. Nessuna carta di credito.