Blog
Architecture
18. Dezember 20258 min

Ein Gamification-System in PostgreSQL entwerfen

Gamification scheint oberflächlich einfach und explodiert in Komplexität, sobald man sie modelliert. Für TAMSIV wollte ich ein umfassendes System.

Ein dediziertes Schema

Das Schema gamification ist von privat und collaborative getrennt. Isolation der Verantwortlichkeiten: eigene RLS-Richtlinien, eigene RPC-Funktionen.

Die 5 Tabellen

  • user_stats: Gesamtpunkte, Level, aktuelle/maximale Streak, letzte Aktivität
  • user_badges: Many-to-Many-Beziehung Benutzer/Abzeichen, Erwerbsdatum
  • points_history: Jeder Punktgewinn für Analysen protokolliert
  • daily_challenges: Eine Herausforderung pro Tag pro Benutzer
  • feed_activity: Aktivitäts-Feed für den sozialen Feed

12 progressive Level

Schwellenwerte: [0, 100, 250, 500, 1000, 2000, 3500, 5500, 8000, 12000, 17500, 25000]. Level 1-3 sind in wenigen Tagen erreichbar. Level 12 erfordert Monate. Darüber hinaus übernimmt eine mathematische Formel.

Die atomaren RPCs

Wenn ein Benutzer eine Aufgabe erledigt: Punkte hinzufügen, Level überprüfen, Streak aktualisieren, Abzeichen überprüfen, Herausforderung aktualisieren, Verlauf protokollieren. Alles atomar über transaktionale PostgreSQL-Funktionen.

Die Streaks

Verwaltung von Zeitzonen, Streak-Freezes, Erkennung von Unterbrechungen. Die maximale Streak ist auf 365 Tage begrenzt – darüber hinaus ist es Sucht, nicht Gamification.