Long Run Club
Our marathon training leaderboard.
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Eine winzige Website, auf der ihr Billard-Ergebnisse eintragt und die daraus automatisch eine Elo-Rangliste berechnet (gleiches System wie im Schach).
lib/players.ts) – Besucher
der Website können keine Spieler hinzufügen oder löschen./api/results) bereitstellt.Kosten: 0 €, solange ihr im kostenlosen Rahmen von Vercel und Neon bleibt (für eine private Freundesrunde bei Weitem ausreichend).
billard-elo). Kein README/gitignore beim
Erstellen mit anhaken, das bringen wir schon mit..gitignore) in das Repository hoch. Am einfachsten geht das über die
GitHub-Weboberfläche: Repository öffnen → "Add file" → "Upload files" →
alle Dateien/Ordner reinziehen → "Commit changes".
(Wenn du lieber mit Git auf der Kommandozeile arbeitest, geht das
natürlich auch mit git init, git add ., git commit, git push.)DATABASE_URL) selbst. Du musst hier
nichts weiter eintragen.RESULT_PASSWORDneunball2024.vercel.app-Adresse live.Fertig! Alle vier hinterlegten Spieler starten automatisch mit Elo 1500, sobald die Seite zum ersten Mal aufgerufen wird.
Nur du als Entwickler kannst das, über den Code:
lib/players.ts in deinem Repository (auf GitHub direkt mit dem
Stift-Symbol editierbar, oder lokal).PLAYERS-Liste hinzu, z.B.:
{ id: "julia", name: "Julia" },
id muss eindeutig sein und sollte keine Leerzeichen/Umlaute/Sonder-
zeichen enthalten. name ist der Anzeigename.Zum Entfernen eines Spielers einfach die Zeile löschen – seine bisherigen Ergebnisse bleiben in der Datenbank erhalten, er verschwindet aber aus der Rangliste und der Auswahl im Formular.
Settings → Environment Variables → RESULT_PASSWORD bearbeiten →
speichern → einmal redeployen (Deployments → Redeploy), damit die Änderung
wirksam wird.
Die "Empfindlichkeit" der Elo-Berechnung (wie stark ein einzelnes Spiel den
Wert verändert) steht in lib/elo.ts als K_FACTOR (Standard: 32). Höher
= größere Ausschläge pro Spiel, niedriger = stabilere, langsamere Werte.
Nur nötig, wenn du selbst am Code herumbasteln willst, bevor du pushst:
npm install
cp .env.local.example .env.local # dann DATABASE_URL/RESULT_PASSWORD eintragen
npm run dev
Für eine lokale DATABASE_URL kannst du entweder eine zweite (kostenlose)
Neon-Datenbank direkt auf neon.tech anlegen, oder mit
vercel env pull .env.local die Werte aus dem Vercel-Projekt lokal holen
(dafür vorher npm install -g vercel und vercel link).
Unten in der Leiste geht es rechts zu „Mein Bereich“. Dort loggt man sich ein.
Zurzeit gibt es nur das Admin-Profil: Benutzername admin (änderbar über
ADMIN_USERNAME), Passwort aus der Umgebungsvariable ADMIN_PASSWORD.
Als Admin kann man unter „Testspiel eintragen“ die komplette Sieges-Animation
ausprobieren, ohne dass etwas gespeichert wird.
Spieler melden sich mit ihrer Uni-Mail (…@law-school.de) an – per Link oder
6-stelligem Code aus der Mail, ohne Passwort. Eingetragen wird vom eigenen
Profil aus; das gemeinsame RESULT_PASSWORD wird nicht mehr gebraucht.
Spieler stehen jetzt in der Datenbank (Tabelle players), lib/players.ts
enthält nur noch die Startliste.
Umgebungsvariablen in Vercel:
| Name | Wofür |
|---|---|
GMAIL_USER | [email protected] – Absender der Mails |
GMAIL_APP_PASSWORD | App-Passwort des Gmail-Kontos (16 Zeichen) |
SESSION_SECRET | optional, Schlüssel für die Login-Cookies (sonst ADMIN_PASSWORD) |
ADMIN_PASSWORD | Notfall-Login für den Admin („Admin-Login“ unter Mein Bereich) |
ADMIN_MAIL | optional, Empfänger der Widerspruchs-Mails (Standard [email protected]) |
Lokal testen ohne Neon: LOCAL_PGLITE_DIR=./.localdb setzen (dafür ist
@electric-sql/pglite als Entwicklungs-Abhängigkeit dabei); ohne
Gmail-Variablen werden Mails nur ins Server-Log geschrieben.