Eine Plattform, die kein HsH-Student hatte.
Gebaut von einem, der sie selbst brauchte.
Aus echter Frustration wird echtes Produkt.
Jeder HS Hannover Student kennt das: QIS, Moodle, Excel, Notizbuch – und trotzdem verliert man den Überblick.
Das ist kein Komfortproblem – es ist ein Systemfehler.
# Aktuelle Realität an der HsH
# Die StudyNexus Lösung
StudyNexus ist keine weitere Todo-App. Es ist ein vollständiges Studien-Betriebssystem.
Der Zugang ist absichtlich exklusiv.
Full-Stack MVP läuft bereits vollständig.
Source Files
(Frontend + Backend)
Alembic
Migrations
Architecture Decision
Records (ADRs)
Backend Tests
alle grün
BIN-Module
vollständig seeded
Docker Services
(Compose Stack)
Fünf Container. Eine kohärente Plattform.
Frontend (Next.js) und Backend (FastAPI) leben im selben Repository.
Jede Änderung am API-Contract ist sofort im Frontend sichtbar.
Jede Mutation durchläuft eine sichere Pipeline.
Die gesamte Infrastruktur startet mit einem einzigen Befehl.
PostgreSQL und Redis haben eigene Health-Checks.
22+ Architecture Decision Records. Hier sind die prägendsten.
Architektur-Entscheidungen sollten dokumentiert sein — nicht nur was, sondern warum. Und welche Alternativen abgelehnt wurden.
Django ist das 'sichere' Python-Framework. FastAPI ist das richtige.
JWT in localStorage speichern ist eine klassische XSS-Schwachstelle.
passlib ist de facto unmaintained. Letzte Version 2022.
Klassisches CSRF-Token-Management benötigt Server-State. Stattdessen
x-studynexus-client: true.
Die Beschränkung auf @stud.hs-hannover.de ist kein Kompromiss – sie ist ein Design-Entscheid.
JWT ist nicht server-seitig invalidierbar. Für Admin-Aktionen (Delete, Archive, Reset) brauchen wir einen Token, den wir sofort sperren können. Redis mit 15-Minuten-TTL – das Sudo-Konzept für das Web.
Next.js Middleware läuft in der Edge Runtime – kein Datenbankzugriff möglich. is_admin: true
direkt im JWT ermöglicht Admin-Route-Guards ohne DB-Abfrage und ohne latency.
Was die Plattform heute kann.
Der erste Blick nach dem Login. Echtzeit aus der Datenbank – kein Caching.
Jedes Widget ist funktional und reaktiv.
@dnd-kit v6 als Fundament. Vier Spalten, Prioritäten, Modul-Verknüpfung.
Vollständig persistent – DB-write bei jedem Drop.
Kein Table-Layout. Ein echtes CSS Grid mit 15-Min-Auflösung, Echtzeit-Linie und HTTP 409 Kollisionserkennung.
Semester-Binding. Ghosting-Modus. Mobile Agenda View.
Module in Semester-Spalten, Drag & Drop, ECTS-Berechnung, echte HsH-Prüfungsordnung.
Das Dashboard hat ein neues Sidebar-Widget, das die BIN-Prüfungsordnung §6 in Echtzeit auswertet: Welche Semester sind abgeschlossen? Ist die Vorprüfung bestanden?
Ein vollständiges Admin-Control-Center: User-Management, Prüfungsordnungs-Verwaltung, Analytics-Dashboard, Audit-Log und JSON-Import – komplett in 2 Tagen geliefert.
Eine eigene Dashboard-Seite, die alle relevanten PO-Regeln darstellt: Zulassungsregeln §6, Notenscala §10, Wiederholungsregeln §11 – mit Live-Status-Badges direkt aus der Datenbank.
3 PDFs. 37 Module. Alle §6-Regeln automatisch abgebildet.
Keine Placeholder-Daten. Alle 37 BIN-Module wurden direkt aus drei offiziellen HsH-Dokumenten extrahiert und in die Datenbank überführt.
Jedes der 37 BIN-Module trägt die offizielle Prüfungsart aus dem Modulhandbuch – persistent in der Datenbank, farbcodiert in der UI.
Eine Pydantic-Validierung stellt sicher, dass nur die 11 offiziellen HsH-Noten eingetragen werden können. HTTP 422 bei ungültiger Note.
GET /me/stats liefert 8 neue Felder. Das Dashboard-Widget wertet sie in Echtzeit aus. Kein
Polling – der Status wird beim Page-Load berechnet.
Security ist kein Nachgedanke. Security ist Architektur.
Jede mutierende Anfrage trägt x-studynexus-client: true.
Cross-Origin-Requests dürfen ohne CORS-Preflight keine Custom Headers setzen.
Der JWT-Token lebt ausschließlich in einem httpOnly Cookie. JavaScript kann diesen Cookie nicht auslesen.
6-stelliger Code via Resend API, 15-Minuten-Ablauf, nur @stud.hs-hannover.de.
Jede Datenbank-Query filtert by user_id. Kein separates Permissions-System – das ORM erzwingt die Isolation strukturell.
Ein gestohlener Admin-JWT allein kann keinen Schaden anrichten. Destruktive Operationen erfordern einen zweiten Faktor – einen kurzlebigen Redis-Token, der durch Passwort-Re-Verifikation ausgestellt wird.
is_admin: true im JWT-Payload (ADR-021). Edge-Runtime kompatibel – kein DB-Lookup, zero
latency. Reicht für alle lesenden Admin-Operationen.
Admin gibt Passwort erneut ein → Redis-Token mit 15-Min-TTL. Nur dieser Token schaltet destruktive Ops frei. Sofort invalidierbar – kein JWT-Expiry abwarten.
Enterprise Control Center. Geplant für eine Woche. Geliefert in zwei Tagen.
13-Felder-KPI-Response, Wachstums-Chart (Recharts LineChart, 7d/30d/90d/1y), User-Segmentierung, DB-Größe
via pg_database_size().
Paginated Liste (25/Seite), 5 Filter-Tabs, Suche über Email+Name, PATCH aller Felder, Password-Reset, Hard Delete mit Begründungspflicht.
6 Router-Dateien, ~30 Endpunkte. Soft Delete auf POs/Modulen (Bestandsschutz), Hard Delete auf Hochschulen/Fakultäten.
Jede Admin-Mutation seit dem ersten Tag protokolliert. Timeline-Layout, ActionBadge mit 8 Farb-Varianten, DiffBlock (old→new Diff, Strikethrough für entfernte Werte).
Validate → Preview (erste 10) → POST → Ergebnis. Idempotent via kuerzel-Lookup in derselben PO. PDF-Placeholder für Sprint 7 (ML/NLP).
Overall-Badge (ok/degraded/down), ServiceBadge pro Service (DB-Ping + Redis.ping), DB-Version + Größe, Auto-Refresh alle 60 Sekunden.
Statt 6 separate Tabellen-Implementierungen: eine generische TypeScript-Komponente. Column-Sort, debounced
Search (350ms), server-side Pagination, hideOnMobile per Spalte — alles konfigurierbar über
Props.
22 neue TypeScript-Interfaces, 11 neue TanStack Query Hooks, adminFetch.ts
als dünner Wrapper: kein direktes fetch(), zentrale Header-Logik, 204-Handling.
12+ Tabellen. 17 Alembic-Migrationen. Vollständige Hochschul-Hierarchie.
Das Datenmodell bildet die echte Hochschulhierarchie ab.
9 SQLAlchemy-Modelle mit UUID Primary Keys und PostgreSQL-native ENUMs.
Der GPA wird nicht einfach gemittelt – ECTS-basierte Gewichtung.
Keine manuellen SQL-Änderungen – jede Schemaänderung ist versioniert, reversibel und auf jedem Environment reproduzierbar.
Sprints 1–3 legten das Fundament (0001–0011). Sprint 4 ergänzte die BIN-PO-Daten (0012–0014). Sprint 5 lieferte die Admin-Infrastruktur (0015–0017).
Wo das Projekt steht. Wohin es geht.
JWT Authentication, PostgreSQL-Schema, Docker Compose, Email-Verifikation, Studienplan-CRUD.
Kanban Board, Schedule Board (15-Min Grid), Dashboard Widgets, Mobile FAB, Agenda View, TanStack Query, i18n DE/EN.
37 BIN-Module aus 3 PDFs, Prüfungsart-System, §6-Voraussetzungen, MilestoneWidget, PO-Übersicht-Seite, GPA-Fix BIN-209.
14 Admin-Seiten, 35+ Endpunkte, Two-Layer Auth, Audit-Log, Analytics (Recharts), JSON-Import, 122/122 Tests.
Admin-API-Rate-Limiting, Toast-Notifications bei API-Errors, E-Mail-Templates für Passwort-Reset, UI-Polishing.
Öffentlicher Launch für alle HS Hannover Studierenden. Onboarding-Flow mit vorausgefüllten POs. Gamification: XP, Badges, Streaks.
StudyNexus ist nicht fertig – und das ist genau der Punkt.