Zum Inhalt springen

MindMate — Digitale Therapieplattform bei Computerspielabhängigkeit

Vier Jahre an einer digitalen Therapieplattform für Kinder mit diagnostizierter Computerspielabhängigkeit am BIH @ Charité — 34 verhaltenstherapeutische Aufgaben, spielerische Motivation, verschlüsselte Patientendaten und zweisprachige Therapieinhalte.

2020 – 2024
Django 5.1 Django REST Framework Wagtail 6 React 18 TypeScript Vite Celery PostgreSQL Redis LinguiJS TanStack React Query Docker

Ausgangslage

Das BIH @ Charité benötigte eine digitale Therapieplattform für Kinder mit diagnostizierter Computerspielabhängigkeit. Ich war von Beginn an 2020 der Entwickler und habe das Projekt vier Jahre lang begleitet — durch mehrere Überarbeitungen, während sich das klinische Bild schärfte und das Produkt mehr als einmal die Richtung wechselte.

Bis zur letzten Ausbaustufe waren die Anforderungen über das hinausgewachsen, was die frühere Architektur tragen konnte: 34 strukturierte Therapieaufgaben aus der kognitiven Verhaltenstherapie, Motivationsmechaniken, die Kinder täglich zurückbringen, zweisprachige Therapieinhalte, die auch ohne Entwickler pflegbar sind, und ein Datenschutzniveau, das der Speicherung personenbezogener Daten Minderjähriger angemessen ist. Der letzte Schritt war deshalb ein vollständiger Neuaufbau — als Ersatz für einen Stack aus Django 3 und Next.js 11, den ich selbst zuvor gebaut hatte.

Vorgehen

Das Backend läuft auf Django 5.1 mit dem Django REST Framework, Wagtail 6 dient als Headless-CMS — so können Behandelnde und Forschende die Therapieinhalte selbst verantworten, ohne Code anzufassen. Celery mit Redis übernimmt geplante Aufgaben, PostgreSQL die Datenhaltung. Das Frontend ist eine React-18-SPA auf Vite-Basis, mit TanStack React Query für die Datenanbindung und Lingui für die Oberflächenübersetzung.

Die entscheidende Designentscheidung — geprägt davon, das Produkt bereits zweimal die Richtung wechseln gesehen zu haben — war, Therapieinhalte als CMS-Daten statt als Code zu behandeln. Jeder Therapiebildschirm setzt sich aus eigenen StreamField-Blöcken zusammen, neue Interventionen lassen sich ohne Deployment schreiben und übersetzen. Der nächste Richtungswechsel würde keinen erneuten Neuaufbau mehr erfordern.

Umsetzung

Das Aufgabensystem. Alle 34 Interventionen leiten sich von einem abstrakten Task-Basismodell mit RewardableAction-Mixin ab und decken kognitive Umstrukturierung (ABC-Schema, Gedanken-Reframing), Expositionsübungen (Verlangensprotokoll), Verhaltensaktivierung, Achtsamkeit, Schlafhygiene und Elternarbeit ab. Vierzehn ergänzende Modelle bilden Gefühle, Situationen, Gedanken und Aktivitäten ab. Jede Aufgabe erhält einen eigenen REST-Endpunkt samt Serializer nach einheitlichem Muster — 34 klinische Modelle, ohne 34 handgeschriebene Implementierungen.

Gamification. Punkte werden über Django-Signals vergeben statt beim Lesen berechnet, dazu eine Serienzählung, ein Celery-Beat-Job mit Reset um Mitternacht UTC, damit Serien unabhängig von der Zeitzone des Kindes konsistent aufgehen, und ein Bonus nach sieben Tagen.

Therapievideos. Videos werden redaktionell über Wagtail gepflegt und dem entkoppelten React-Client über eigene Chooser-Blöcke als JSON ausgeliefert. Ich habe eine Middleware für Range-Requests mit gechunkten Antworten geschrieben, damit Springen und Streaming sauber funktionieren. Im Client verzichtet ein barrierearmer Player bewusst auf die Spulleiste: Der Fortschritt in einer Therapieeinheit hängt daran, dass das Video tatsächlich zu Ende läuft — nicht daran, dass das Kind ans Ende springt.

Schutz der Kinderdaten. Personenbezogene Felder — Name, E-Mail, Eltern-E-Mail — liegen mit AES-Feldverschlüsselung auf Datenbankebene verschlüsselt vor. Das ersetzte einen externen Dienst zur PII-Speicherung und hält die Daten über das Django-ORM weiterhin nutzbar. Administrative Zugänge sind mit TOTP-Zwei-Faktor-Authentifizierung abgesichert.

Durchgängig zweisprachig. Wagtail Localize verwaltet die Übersetzung der redaktionellen Therapieinhalte, Lingui mit SWC-Plugin die Oberflächentexte bis hin zu den Bedienelementen des Players.

Ergebnis

Die Plattform deckte den gesamten Therapieverlauf ab — Tagebücher, Wochenpläne, Therapiemodule und spielerischer Fortschritt — als modernes, wartbares System, das eine einzelne Person weiterentwickeln kann. Abgesichert war sie durch eine vollständige pytest- und Vitest-Suite, GitHub-Actions-CI und einen Docker-Compose-Stack aus Django, React-Frontend, PostgreSQL, Redis sowie Celery-Worker und -Beat.

Vier Jahre an einem Projekt zu bleiben und mehrere Richtungswechsel mitzugehen, hat mich mehr über Architektur für Veränderung gelehrt als jeder einzelne Neubau. In enger Zusammenarbeit mit der fachlichen Leitung habe ich an Nutzerinterviews teilgenommen und die Bedienung anhand des Feedbacks von Behandelnden und Testnutzenden überarbeitet — die technischen Entscheidungen blieben so an dem ausgerichtet, was Kinder und Therapeutinnen tatsächlich brauchten. Die Förderung des Programms wurde später eingestellt, die Plattform nicht weitergeführt.

Highlights

  • Vier Jahre an einem Projekt, durch mehrere Richtungswechsel
  • 34 verhaltenstherapeutische Aufgabenmodelle aus gemeinsamer Basisklasse
  • Gamification über Signals mit zeitzonensicherer Serienlogik
  • Redaktionell gepflegte Videos mit fortschrittsgekoppelter Wiedergabe
  • AES-Feldverschlüsselung für personenbezogene Daten von Kindern
  • Zweisprachige Therapieinhalte über Wagtail Localize und Lingui