NBA Feed
Your teams' news and games, with scores hidden until you reveal them.
AGPLv3 기반 지구력 훈련 플랫폼—EU 호스팅, 투명한 로직, 자체 호스팅·전체 내보내기 지원
AGPLv3 endurance training platform: EU-oriented hosting, transparent CTL/ATL/TSB logic in code, self-hosting, and full export. Built in Grenoble.
스포츠·피트니스TypeScript · MDXGitHub @openathleteorg온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기The open-source alternative to TrainingPeaks. Self-hostable endurance training platform. Your data stays yours.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
The ethical alternative to TrainingPeaks and Strava.
OpenAthlete is open source under the AGPLv3, built so you can own your training data: self-host, export, and avoid vendor lock-in. Core hosting and processing are oriented toward the European Union with GDPR-minded defaults.
Endurance athletes feed years of intimate training data into proprietary U.S. platforms such as TrainingPeaks, Strava, and Garmin Connect, with little practical say in how that data is processed, monetized, or retained.README 전문 보기 ↗Endurance athletes feed years of intimate training data into proprietary U.S. platforms such as TrainingPeaks, Strava, and Garmin Connect, with little practical say in how that data is processed, monetized, or retained.
OpenAthlete is a different proposition: comparable tracking and analysis in an open-source stack, hosted in the EU when you use managed infrastructure, self-hostable when you prefer your own hardware, and with training-load logic you can read and adapt in the repository. It is maintained by an ultra-trail runner based in Grenoble.
| Feature | 🟢 OpenAthlete Cloud | 🔵 TrainingPeaks | 🟠 Strava | 🟣 Intervals.icu |
|---|---|---|---|---|
| Open source code | ✅ AGPLv3 | ❌ | ❌ | ❌ |
| Self-hostable option | ✅ Free | ❌ | ❌ | ❌ |
| Data hosted in EU | ✅ France | ❌ US | ❌ US | ⚠️ Mixed |
| GDPR-native | ✅ | ⚠️ | ⚠️ | ⚠️ |
| Transparent algorithms | ✅ Code audit | ❌ Black box | ❌ Black box | ⚠️ Partial |
| Full data export | ✅ Native | ⚠️ Limited | ⚠️ Limited | ✅ |
| CTL/ATL/TSB tracking | ✅ | ✅ | ❌ | ✅ |
| AI session generation | ✅ Your key, or included for Supporters | ⚠️ Premium | ❌ | ❌ |
| Price | Free, or 5€/mo (50€/yr) as a Supporter | $19.99/mo | $11.99/mo | Free (donation) |
OpenAthlete is built by athletes, for athletes. We're proud to be part of the open-source community and grateful for all contributors who help make this platform better.
To get a local copy up and running, please follow these simple steps.
Here is what you need to be able to run OpenAthlete.
If you want to enable AI features, you may need to obtain API credentials. More details can be found in the documentation.
Clone the repo into a public GitHub repository (or fork https://github.com/openathleteorg/openathlete/fork):
git clone https://github.com/openathleteorg/openathlete.git
cd openathlete
Install packages with pnpm
pnpm install
Set up your environment variables
apps/web/.env.example to apps/web/.env and update with your configurationapps/api/.env.example to apps/api/.env and update with your configurationDATABASE_URL - PostgreSQL connection stringJWT_SECRET - Secret key for JWT tokens (generate with openssl rand -base64 32)VITE_API_URL - Backend API URL (for frontend)Setup Node version
If your Node version does not meet the project's requirements, use nvm:
nvm use
You first might need to install the specific version and then use it:
nvm install && nvm use
Build shared packages
pnpm shared build
Set up the database using Prisma
In a development environment, run:
pnpm database run db:migrate dev
In a production environment, run:
pnpm database run db:deploy
Run (in development mode)
pnpm dev
This will start:
http://localhost:5173http://localhost:3000Run type checking before committing:
pnpm tsc:check
Format and lint your code:
pnpm format:write
pnpm lint:fix
Pull the current version:
git pull
Check if dependencies got added/updated/removed
pnpm install
Apply database migrations by running one of the following commands:
In a development environment, run:
pnpm database run db:migrate dev
In a production environment, run:
pnpm database run db:deploy
Check for .env variables changes
Compare your .env files with the .env.example files to see if new variables were added.
Start the server. In a development environment, just do:
pnpm dev
For a production build, run for example:
pnpm build
pnpm start
Enjoy the new version.
On any server with Docker and its Compose plugin:
curl -fsSL https://raw.githubusercontent.com/openathleteorg/openathlete/main/scripts/install.sh | sh
OpenAthlete then runs on http://localhost from the published images, with new random secrets in openathlete/.env. Add -s -- --domain openathlete.example.org to serve your domain over HTTPS with automatic certificates. Run the script again to update.
The self-hosting guide covers HTTPS, device sync, AI, backups and upgrades from older setups.
For detailed deployment instructions, see our self-hosting documentation.
Build the application:
cd apps/api
pnpm install
pnpm build
Set up environment variables in .env
Run database migrations:
pnpm database run db:deploy
Start the server:
pnpm start:prod
Build the application:
cd apps/web
pnpm install
pnpm build
Serve the built files using a web server (nginx, Apache, etc.)
Example nginx configuration:
server {
listen 80;
server_name your-domain.com;
root /path/to/apps/web/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
DATABASE_URL="postgresql://user:password@host:5432/openathlete"
JWT_SECRET="your-secret-key"
NODE_ENV="production"
VITE_API_URL="https://api.your-domain.com"
For a complete list of environment variables, see the .env.example files in each app directory.
OpenAthlete is built by one developer in Grenoble, supported by the community. There are three ways to help the project thrive:
- Become a Supporter on OpenAthlete Cloud — The Cloud is free; the Supporter subscription (5€/month or 50€/year) funds development and adds unlimited coached athletes and AI included every month. See openathlete.org.
- Become a Patreon supporter — Recurring support without using the cloud. patreon.com/OpenAthlete.
- Contribute code or feedback — Star the repo, open issues, send PRs, join the Discord.
Self-hosting is fully supported and always free, with no limits. Supporters fund the project's long-term sustainability.
OpenAthlete is actively developed. Here's what's coming next:
See our GitHub Issues for a detailed list of proposed features and known issues.
Distributed under the AGPLv3 License. See LICENSE for more information.
Please see our contributing guide.
We have a list of good first issues that contain small features and bugs which have a relatively limited scope. This is a great place to get started, gain experience, and get familiar with our contribution process.
We also have help wanted issues that are perfect for contributors looking to make a bigger impact.
Don't code but still want to contribute? Join our Discord community and help translate OpenAthlete into your language.
Special thanks to these amazing projects which help power OpenAthlete: