2.6 KiB
2.6 KiB
WM 2026 Tippspiel – Backend Setup
Voraussetzungen
- Node.js 20+
- npm oder pnpm
- Supabase Account (kostenlos)
- football-data.org API Key (kostenlos)
- Railway oder Render Account (Hosting)
1. Supabase einrichten
- Projekt anlegen unter https://supabase.com
- SQL Editor öffnen →
src/db/schema.sqlvollständig ausführen - Unter Settings → Database → Connection string die
DATABASE_URLkopieren - Unter Settings → API → service_role key den Service Role Key kopieren
2. Staffbase Plugin Public Key
- In Staffbase Studio: Plugins → Neues Plugin anlegen
- Plugin-Typ: External Web App (iFrame)
- Den angezeigten Public Key (RSA) kopieren
- In
.envalsSTAFFBASE_PUBLIC_KEYeintragen (mehrzeilig mit\noder in Anführungszeichen)
3. football-data.org API Key
- Registrieren unter https://www.football-data.org/client/register
- API Key per E-Mail erhalten → in
.envalsFOOTBALL_API_KEYeintragen
4. Lokale Entwicklung
cd backend
npm install
cp .env.example .env
# .env mit echten Werten befüllen
npm run dev
# → Server läuft auf http://localhost:3001
# → Health Check: http://localhost:3001/health
5. Deployment auf Railway
# Railway CLI installieren
npm install -g @railway/cli
# Login
railway login
# Projekt erstellen und deployen
railway init
railway up
# Environment Variables setzen (einmalig)
railway variables set DATABASE_URL="..." \
STAFFBASE_PUBLIC_KEY="..." \
FOOTBALL_API_KEY="..." \
NODE_ENV=production \
CORS_ORIGIN="https://app.staffbase.com"
6. Ersten Sync durchführen
Nach dem Deployment:
# Spiele von football-data.org laden (als Editor-User via Staffbase)
POST /api/admin/sync
# Oder direkt via curl (mit gültigem JWT):
curl -X POST https://your-app.railway.app/api/admin/sync \
-H "Authorization: Bearer <staffbase_jwt>"
API Übersicht
| Method | Endpoint | Beschreibung |
|---|---|---|
| GET | /health |
Health Check |
| GET | /api/matches |
Alle Spiele (mit eigenem Tipp) |
| GET | /api/matches/:id |
Einzelnes Spiel |
| POST | /api/tips |
Tipp abgeben / aktualisieren |
| GET | /api/tips |
Eigene Tipps |
| GET | /api/leaderboard |
Rangliste (Top 50) |
| GET | /api/leaderboard/me |
Eigene Statistiken |
| POST | /api/admin/sync |
Spiele synchronisieren (Editor) |
| POST | /api/admin/evaluate |
Tipps auswerten (Editor) |
| GET | /api/admin/stats |
Admin-Statistiken (Editor) |
Punkte-System
| Ergebnis | Punkte |
|---|---|
| Exaktes Ergebnis | 3 |
| Richtige Tendenz (S/U/N) | 1 |
| Falsche Tendenz | 0 |