Live unter https://craftattack.hiorcraft.tv
Hinweis: Dieses Repo ist der Quellcode des Trackers, der auf craftattack.hiorcraft.tv läuft. Es ist nicht als Self-Hosting-Paket gedacht und es gibt dafür keinen Support. Nutz einfach die Live-Seite. Für neue Features, Bugfixes oder Ideen sind Pull Requests und Issues aber sehr willkommen.
- Repo forken und klonen,
npm install npm run devstartet die App lokal auf http://localhost:3000. OhneDATABASE_URLnutzt sie eine eingebettete Datenbank (PGlite) unterdata/, du brauchst also kein PostgreSQL.- Änderung machen,
npm run lintundnpx tsc --noEmitmüssen sauber sein. - Pull Request gegen
mainmit kurzer Beschreibung, was und warum.
Ideen, die noch offen sind: Twitch-API-Anbindung (Clips, Kategorie), Discord-Benachrichtigungen bei Highlights, Tages- und Wochenstatistiken, Vergleich zweier Spieler.
Inoffizieller Tracker für CraftAttack 14. Fragt alle 30 Sekunden https://craftattack.one/api/stats ab und dazu
für jeden bekannten Spieler https://craftattack.one/api/ext/<id> (alle Zähler plus Rang, auch außerhalb der Top 10),
vergleicht den Stand mit dem vorherigen und schreibt jede Änderung als Ereignis mit Zeitstempel auf.
npm install
npm run dev # http://localhost:3000Der Poller startet automatisch mit dem Server (instrumentation.ts).
DATABASE_URLgesetzt (siehe.env.example) → echtes PostgreSQL überpg. Tabellen werden beim Start angelegt.- Nicht gesetzt → eingebettetes PostgreSQL (PGlite) unter
data/pglite, ohne Installation.
Tabellen: tracker_meta (Status, Rekorde, letzter API-Snapshot), players, events (Chronik), history (Zeitreihe gesamt), player_history (Zeitreihe pro Spieler).
Alle Seiten werden komplett serverseitig gerendert (SSR, instant = false), kein Lade-Skeleton.
| Ereignis | Quelle | Wo |
|---|---|---|
| Join / Leave (inkl. Session-Dauer) | online[] |
Server |
| Tod, Diamanten, Blöcke, Mobs, Strecke | Anstieg in /api/ext/<id> bzw. den Top-10-Boards |
Server |
| Tode, die keinem bekannten Spieler zuzuordnen sind | totals.deaths |
Server (ohne Spieler) |
| Stream an / aus / Titel geändert, Peak-Zuschauer | live[] |
Twitch |
| Server online / offline | serverOnline |
Server |
| Erster Auftritt eines Spielers (seit Tracker-Start) | online[] |
Server |
| Rang-Aufstieg in die Top 3 einer Bestenliste | Boards | Server |
| Meilensteine (z. B. 24 h Spielzeit, 1.000 Diamanten, 10. Tod) | Boards | Server |
| Rekorde: meiste gleichzeitig online / live / Zuschauer | Snapshot | Server |
| Pro Spieler: Zeitreihe aller Werte, längste Session, Online-Zeit | abgeleitet | – |
Koordinaten liefert die API nicht. „Wo“ bedeutet daher: auf dem Server oder auf Twitch.
/Übersicht im Look der offiziellen Stats-Seite plus Ereignis-Feed und Verlaufskurven/ereignissekomplette Chronik mit Filtern (Kategorie, Ort, Spieler) und Seiten/spielerund/spieler/<id>alle erfassten Spieler mit Verlauf, Sessions, Graphen und bei Live-Streamern Twitch-Player plus Chat/eventsoffizielle Termine von craftattack.one (stündlich abgeglichen)/liveTwitch-Übersicht, Zuschauerkurve und Stream-Chronik/api/tracker?limit=200&player=<id>&type=<typ>JSON-Export,/api/tracker/polllöst eine Abfrage manuell aus
DATABASE_URLPostgreSQL-Verbindung, z. B.postgres://user:pass@localhost:5432/actrackerCA_STATS_URLandere API-AdresseCA_EXT_URLBasis-Adresse der Einzelstatistik (Standardhttps://craftattack.one/api/ext)CA_EXT_CONCURRENCYgleichzeitige ext-Anfragen pro Poll (Standard 8)CA_POLL_INTERVAL_MSAbfrageintervall (Standard 30000)NEXT_PUBLIC_TWITCH_URL,NEXT_PUBLIC_DISCORD_URL,NEXT_PUBLIC_GITHUB_URLoptionale Footer-Links (werden beim Build eingebettet)