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.