Diese Checkliste sollte vor jedem Deployment durchgegangen werden.
- Alle Functions haben einheitliche Response-Shape (
ok: boolean) - Alle Functions loggen wichtige Events (
console.log('[functionName]', ...)) - Client-Code hat
Number.isFinite()Guards für numerische Werte - Keine
console.errorohne Handling - TypeScript Compilation ohne Errors (
npm run build)
-
package.jsonenthält@supabase/supabase-jsindependencies(nichtdevDependencies) -
package-lock.jsonist aktuell (npm install) - Keine Security-Vulnerabilities (
npm audit)
- Schema ist aktuell (
docs/supabase_schema.sql) -
progressTabelle hatperfect_standard_quizundperfect_bountySpalten - Indizes sind erstellt
- Migration wurde in Supabase SQL Editor ausgeführt (falls Schema-Änderungen)
-
SUPABASE_URList gesetzt -
SUPABASE_SERVICE_ROLE_KEYist gesetzt (für server-side operations) - Keine
SUPABASE_ANON_KEYfür Functions (nur Service Role) - Env Vars sind für Production Branch gesetzt
# Install dependencies
npm install
# Build
npm run build
# Test lokal (falls möglich)
netlify devgit add .
git commit -m "fix: [Beschreibung der Fixes]"
git push origin main- Warte auf automatisches Deployment (via Git Hook)
- Oder trigger manuell: Netlify Dashboard → Deploys → Trigger deploy
node scripts/selfcheck.mjs https://realer-math.netlify.appErwartet:
- Alle Tests passieren (
✓ Passed: 7) - Keine
dev-fallbackWarnings - Exit Code: 0
Wenn dev-fallback:
- Prüfe Netlify Env Vars
- Prüfe Function Logs für Errors
- Redeploy nach Fix
# coinsAdjust
curl -X POST https://realer-math.netlify.app/.netlify/functions/coinsAdjust \
-H "Content-Type: application/json" \
-H "x-dev-user: test-user-123" \
-d '{"delta": 50, "reason": "test", "refType": "unit", "refId": "u1"}'
# progressSave
curl -X POST https://realer-math.netlify.app/.netlify/functions/progressSave \
-H "Content-Type: application/json" \
-H "x-dev-user: test-user-123" \
-d '{"unitId": "u1", "questCoinsEarned": 10, "questCompletedCount": 1, "bountyCompleted": false, "perfectStandardQuiz": true, "perfectBounty": false}'
# chatSend
curl -X POST https://realer-math.netlify.app/.netlify/functions/chatSend \
-H "Content-Type: application/json" \
-H "x-dev-user: test-user-123" \
-d '{"text": "Test", "channelId": "class:global", "username": "Test"}'Prüfe:
- Response enthält
"ok": true - Keine
"note": "dev-fallback" - Numerische Werte sind Zahlen (nicht Strings)
Gehe zu Supabase Dashboard → Table Editor:
-
usersTabelle: Test-User existiert,coinswurde aktualisiert -
progressTabelle: Test-Progress wurde gespeichert, Flags sind korrekt -
messagesTabelle: Test-Message wurde gespeichert -
coin_ledgerTabelle: Ledger-Eintrag wurde erstellt
- Öffne https://realer-math.netlify.app
- Login mit Test-User
- Prüfe:
- Coins werden angezeigt (keine NaN)
- Level wird berechnet (keine NaN)
- Quest abschließen → Coins steigen
- Reload → Coins bleiben erhalten
- Perfect Quiz → Bounty wird unlocked
- Reload → Bounty bleibt unlocked
- Chat: Nachricht senden → erscheint sofort
- Chat: Reload → Nachrichten bleiben erhalten
Falls Deployment fehlschlägt:
-
Netlify Rollback:
- Gehe zu Netlify Dashboard → Deploys
- Wähle vorherigen erfolgreichen Deploy
- Klicke "Publish deploy"
-
Supabase Rollback:
- Falls Schema-Änderungen: Führe Migration rückgängig
- Oder: Restore aus Backup (falls vorhanden)
-
Code Rollback:
git revert HEAD git push origin main
Workaround: Prüfe Env Vars, redeploy
Workaround: Prüfe Browser Console, prüfe Function Responses
Workaround: Prüfe progress Tabelle, prüfe perfect_standard_quiz Flag
Workaround: Prüfe messages Tabelle, prüfe chatPoll Response
Nach Deployment für 24h überwachen:
-
Netlify Function Logs:
- Prüfe auf Errors oder Warnings
- Prüfe auf dev-fallback Meldungen
- Prüfe auf ungewöhnliche Response-Times
-
Supabase Dashboard:
- Prüfe auf DB-Errors
- Prüfe auf ungewöhnliche Query-Times
- Prüfe auf fehlgeschlagene Inserts/Updates
-
User Feedback:
- Prüfe auf NaN-Berichte
- Prüfe auf fehlende Coins/Progress
- Prüfe auf Chat-Probleme
Deployment ist erfolgreich wenn:
- ✅ Self-Check Script: Alle Tests passieren ohne dev-fallback
- ✅ Supabase: Daten werden korrekt persistiert
- ✅ UI: Keine NaN-Werte, Coins/Progress funktionieren
- ✅ Chat: Messages werden gesendet und angezeigt
- ✅ Bounty: Unlock funktioniert und persistiert
Bei Problemen:
- Prüfe
PROBLEMS.mdfür bekannte Issues - Prüfe
SELF_CHECK.mdfür Troubleshooting - Prüfe Netlify Function Logs
- Prüfe Supabase Dashboard für DB-Errors