0884f02e15e7efba2caacf661df3c18fd7571f88
Responsive & Design: - Sidebar wird unter 900px zum Off-Canvas-Menue (Hamburger-Button, Backdrop, Auto-Close bei Navigation) statt fix 228px breit zu bleiben - Formular-/Statistik-Grids brechen bei 900px/560px auf weniger Spalten um, Modals gehen unter 560px auf Vollbild, iOS-Zoom-Bug bei Formularfeldern durch font-size:16px auf Mobile vermieden - Wärmere Optik ausschliesslich über CSS-Variablen (:root): Creme- Hintergrund, weichere Akzentfarbe, groessere Radien, neuer --shadow-Token auf Card/Modal - kein Redesign pro Seite noetig, da die App durchgehend über diese Variablen themt Abo-/Zahlungsgeruest (Anbieter voraussichtlich PayPal, noch nicht angebunden): - nutzer.abo_bis / abo_typ + globaler Schalter einstellungen.abo_pflicht (Default AUS) - solange PayPal nicht wirklich läuft, sperrt das Gate niemanden aus - _hat_aktiven_zugang() zentral in global_auth_check(): blockiert bei aktiver Zahlungspflicht ohne gueltiges Abo mit 402 Payment Required, laesst /api/abo/* und /api/auth/logout immer durch - POST /api/abo/aktivieren ist bewusst ein 501-Stub bis PayPal echt angebunden ist - kein vorgetaeuschter Erfolg - Admin-Dashboard: "Freischalten"-Aktion pro Konto (1-12 Monate, Pflicht-Begruendung, audit-geloggt) - deckt die geforderte Moeglichkeit ab, Konten kostenlos freizuschalten (POST /api/admin/nutzer/<uid>/abo-freischalten) - Backend-Einstellungen: neue Karte "Abo & Zahlung" fuer Preis und den abo_pflicht-Schalter - Frontend: neue Seite "Mein Abo" (pgMeinAbo), aboBlockiert-Flag in initApp() leitet jede Navigation dorthin um, wenn kein Zugang besteht Verifiziert: JS-Syntax-Check, Playwright-Screenshots auf Desktop/ Tablet/Mobile (Sidebar-Slide-in, Grid-Umbruch, Interview-Wizard auf Handy), API-Tests fuer das komplette Abo-Gate (Toggle an/aus, 402, Freischaltung, Stub-Endpoint, Restore auf sicheren Default).
Languages
Python
48%
TypeScript
33.6%
HTML
17.9%
Dockerfile
0.2%
CSS
0.2%