Pular para o conteúdo
OpenAthlete

AGPL-3.0Código aberto

Código aberto, das fórmulas aos servidores

Cada linha do OpenAthlete é pública no GitHub: a matemática da carga de treino, os conectores dos relógios, os prompts da IA. Use nossos servidores, ou instale nos seus com um único 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);
}
Como a carga de uma sessão é calculada, direto do repositório

A licença

AGPL-3.0, em palavras simples

Uma licença de software livre com uma regra a mais para software usado pela rede. Veja o que isso significa para você.

Você pode

  • Usá-lo para qualquer coisa: seu próprio treino, sua assessoria, seu clube.
  • Ler e estudar cada linha.
  • Modificá-lo do seu jeito.
  • Rodar sua própria cópia, para você ou para outras pessoas.

A licença pede

  • Se pessoas usam uma versão modificada pela rede, ofereça a elas o código-fonte.
  • Compartilhe suas alterações sob a mesma licença.
  • Mantenha os avisos de direitos autorais e de licença.

Rodá-lo sem modificações para o seu clube não traz nenhuma obrigação. Este é um resumo, não uma orientação jurídica: o texto completo está em gnu.org.

Por que isso importa

Seu histórico de treino não deveria depender do plano de negócios de outra pessoa

Março de 2024

O Today's Plan, da Specialized, fecha as portas. Seus treinadores e atletas precisam mudar de plataforma.

Julho de 2026

A Garmin compra o TrainingPeaks. A plataforma de treinamento independente mais conhecida agora pertence a um fabricante de relógios.

Com o OpenAthlete

O código é público. Se parássemos amanhã, qualquer pessoa poderia rodá-lo no dia seguinte, e sua exportação guarda todo o seu histórico.

Auto-hospedagem

Sua própria instância em três passos

Para um clube, um laboratório, uma assessoria esportiva, ou só para você.

  1. 1

    Arrume um servidor com Docker

    Qualquer máquina Linux com Docker e o plugin Compose. 1 GB de RAM é suficiente: a stack usa cerca de 250 MB em repouso. Aponte o DNS do seu domínio para ela.

  2. 2

    Rode o script de instalação

    Ele baixa o arquivo Compose, gera um .env com segredos novos, baixa as imagens e inicia o PostgreSQL, o Redis, a API, o app web e o Caddy para HTTPS automático.

  3. 3

    Crie a primeira conta

    Abra seu domínio. A primeira conta é sua; depois disso, o cadastro é por convite, então convide seus atletas ou treinadores. Rode o script de novo para atualizar.

  4. Guarde uma cópia do .env: sem o HASH_PEPPER, nenhuma senha pode ser verificada.
~
$ 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

Funciona de cara

  • Todos os recursos, sem limite de atletas e sem paywall
  • Sincronização com a COROS, que só precisa do seu endereço
  • Importação de FIT, GPX e TCX, e a API de importação de atividades
  • O servidor MCP para Claude, ChatGPT e outros agentes
  • As próprias chaves de IA dos usuários, e modelos locais como o Ollama

Desativado até você configurar no .env

  • E-mail: convites, redefinição de senhaSMTP_HOST · BREVO_API_KEY
  • Sincronização com Strava, Garmin, Polar e Suunto, com uma conta de desenvolvedor em cada marcaSTRAVA_* · GARMIN_* · POLAR_* · SUUNTO_*
  • Login único (SSO)OIDC_ISSUER · OIDC_CLIENT_ID
  • IA com as chaves da instância, com orçamento mensal por usuárioOPENAI_API_KEY · AI_HOSTED_MONTHLY_BUDGET_USD
  • Estimativa de carga por IA para sessões planejadasENABLE_TRAINING_LOAD_ESTIMATION
  • Analytics e relatórios de errosPOSTHOG_PROJECT_TOKEN
  • Cobrança, de que você não precisaSTRIPE_*

Privacidade

Uma instância auto-hospedada não nos envia nada

Sem analytics, sem relatórios de erros, sem comunicação com a gente. Um teste de ponta a ponta abre o app auto-hospedado em um navegador real e falha se ele fizer uma única requisição a terceiros.

Duas chamadas externas permanecem de propósito: os blocos de mapa do OpenStreetMap no navegador e o clima do Open-Meteo no seu servidor.

Contribua

Tem espaço para você aqui

Código

Escolha uma “good first issue”, ou corrija o que estiver te incomodando. O ambiente de desenvolvimento está documentado.

Good first issues

Traduções

O app fala inglês, francês, italiano, espanhol e português do Brasil. Corrija uma frase esquisita ou traga um novo idioma.

Arquivos de tradução

Feedback

Conte o que está faltando, o que está quebrado, pelo que você pagaria. O Discord é onde o roadmap é debatido.

Entrar no Discord

Financiamento

Pago pelos usuários, e por mais ninguém

Sem investidores, sem anúncios, sem venda de dados. Os Supporters (€5 por mês ou €50 por ano) e os cafés avulsos pagam os servidores, a IA e o tempo de desenvolvimento.

Feito com NestJS, PostgreSQL com pgvector, Redis e BullMQ, React 19 e Vite, Capacitor e Next.js. Imagens Docker no GHCR para amd64 e arm64.

Prefere que a gente hospede?

O mesmo código, nos nossos servidores na França. Grátis, com o Supporter se você quiser IA com as nossas chaves ou mais de cinco atletas.

Grátis para sempre. Sem cartão de crédito.