OpenAthlete
AGPLv3 endurance training platform: EU-oriented hosting, transparent CTL/ATL/TSB logic in code, self-hosting, and full export. Built in Grenoble.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Alle Termine auf einen Blick vom SV Bachum Bergheim e.V.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Terminverwaltung für den SV Bachum/Bergheim, powered by platzcoach. Eine HTML-Seite auf GitHub Pages, Daten als JSON im selben Repo. Ansehen kann jeder — ohne Anmeldung. Nur Eintragen, Ändern und Löschen erfordert einen Zugang. Neues GitHub-Repo, z. B. svbb-termine. Alle Dateien oben hochladen (Ordnerstruktur beibehalten). Settings → Pages → Source: Deploy from a branch → Branch main, Ordner / (root) → Save. Nach ein bis zwei Minuten läuft die App unter https://DEIN-NAME.github.io/svbb-termine/ repo muss exakt stimmen, sonst kann die App nicht speichern.查看完整 README ↗
Terminverwaltung für den SV Bachum/Bergheim, powered by platzcoach. Eine HTML-Seite auf GitHub Pages, Daten als JSON im selben Repo.
Ansehen kann jeder — ohne Anmeldung. Nur Eintragen, Ändern und Löschen erfordert einen Zugang.
index.html
manifest.json
icon-192.png
icon-512.png
apple-touch-icon.png
favicon.ico
favicon.webp
og-image.png
assets/logo.svg
assets/logo-horizontal.svg
assets/logo-icon.svg
assets/logo-white.svg
data/config.json
data/events.json
data/users.json
termine.ics ← wird von der App selbst erzeugt
Neues GitHub-Repo, z. B. svbb-termine. Alle Dateien oben hochladen (Ordnerstruktur beibehalten).
Settings → Pages → Source: Deploy from a branch → Branch main, Ordner / (root) → Save.
Nach ein bis zwei Minuten läuft die App unter
https://DEIN-NAME.github.io/svbb-termine/
{
"repo": "DEIN-GITHUB-NAME/svbb-termine",
"branch": "main",
"clubName": "SV Bachum / Bergheim e.V.",
"admin": {
"user": "admin",
"password": "svbachumbergheim",
"first": "Vorstand",
"last": "Admin"
}
}
repo muss exakt stimmen, sonst kann die App nicht speichern.
GitHub → Settings → Developer settings → Personal access tokens → Fine-grained tokens → Generate new token
| Feld | Wert |
|---|---|
| Repository access | Only select repositories → svbb-termine |
| Permissions → Contents | Read and write |
| Expiration | 1 Jahr (Termin notieren!) |
Token kopieren, er wird nur einmal angezeigt.
App öffnen → oben rechts Anmelden:
adminsvbachumbergheimDann Konto → GitHub-Token → einfügen → Speichern.
Konto → Neuen Trainer anlegen: Vorname, Nachname, E-Mail, Start-Passwort. Zugangsdaten weitergeben. Fertig.
data/events.json (Termine) und data/users.json (Trainer).Bei jedem Speichern schreibt die App zusätzlich termine.ics ins Repo. Diese URL kann jeder abonnieren:
https://DEIN-NAME.github.io/svbb-termine/termine.ics
Der Link steht auch in der App unter Konto → Kalender abonnieren zum Kopieren.
Danach erscheinen alle Vereinstermine im Handy-Kalender und aktualisieren sich von selbst. Ideal für den WhatsApp-Verteiler an Eltern: einmal Link schicken statt jeden Termin einzeln.
Der Abo-Link ist perfekt für die Vereins-Website oder einen QR-Code am Vereinsheim.
Danach startet sie mit eigenem Icon, ohne Browser-Leiste.
GitHub Pages hat keinen Server. Alles läuft im Browser.
Was geschützt ist:
Der Schreib-Token wird mit dem Passwort jedes Trainers verschlüsselt (PBKDF2, 310.000 Runden + AES-GCM) und liegt nur so in users.json. Ohne richtiges Passwort ist er nicht lesbar → kein Schreibzugriff. Das Admin-Passwort steht zwar im Klartext in config.json, nützt aber allein nichts: Der Admin-Token liegt nur lokal auf dem Gerät des Admins, nie im Repo.
Was nicht geschützt ist — und jetzt auch nicht mehr sein soll:
users.json stehen Namen und E-Mail-Adressen der Trainer öffentlich lesbar. Wenn das stört: nur Vorname + Vereins-Mail statt privater Adresse eintragen.12345678.Faustregel: Passend für einen öffentlichen Vereinskalender, nicht für sensible Daten.
Nach dem Anmelden unter Konto → Anmeldung per Fingerabdruck. Danach reicht Finger oder Face-ID.
Das ist eine Gerätesperre, kein zusätzlicher Server-Schutz — der Zugang bleibt dafür auf dem Gerät gespeichert. Nur auf dem eigenen Handy einrichten, nicht auf einem geteilten Rechner. Funktioniert nur über HTTPS, auf GitHub Pages also automatisch.
data/config.json im Repo bearbeiten, password ändern, committen. Sonst nirgends.
Wenn Trainer „Token ungültig" melden: neuen Token erstellen (Schritt 4), als Admin hinterlegen (Schritt 5) — und alle Trainer neu anlegen, weil in ihren Datensätzen noch der alte Token verschlüsselt liegt. Der unschöne Teil dieser Architektur; mit einem Jahr Laufzeit passiert es selten.
Sobald ihr echte Zugriffsrechte oder viele Nutzer braucht, ist ein kleines Backend (z. B. Supabase, kostenloser Tarif) der saubere Weg. Die Oberfläche kann bleiben, nur der Speicherteil wird getauscht.