Die Herausforderung
Das Hart College wickelte die Zulassung über eine öffentliche Marketing-Website ab, die Kursanmeldung über eine separate Tabelle, den Einzug der Studiengebühren per Scheck und E-Transfer und die Kommunikation mit Studierenden über ein gemeinsames Postfach. Nichts ließ sich abgleichen. Administratoren erfassten jeden neuen Studierenden in drei Systemen neu, das Studierendensekretariat hatte keine einheitliche Antwort auf die Frage „Wer ist in diesem Durchgang eingeschrieben?“, und die Finanzabteilung verbrachte jeden Monat eine ganze Woche damit, fehlenden Zahlungen nachzujagen und sie mit Namen abzugleichen, die über die Systeme hinweg nicht ganz übereinstimmten.
Die Aufgabe klang trügerisch einfach: alles durch ein einziges Student Information System (SIS) zu ersetzen, in dem ein Interessent auf einer öffentlichen Marketing-Seite einen Kurs entdecken, sich für einen bestimmten Durchgang einschreiben, die Studiengebühren online bezahlen und in einem Self-Service-Portal seinen Stundenplan und Zahlungsverlauf einsehen kann – und in dem ein Administrator Kurstermine, Kurse, Gutscheine, Bewerber und Anhänge in einem einzigen Dashboard anlegen kann, ohne Parallel-Tabellen und ohne Abstimmungsarbeit zum Monatsende.
Unsere Lösung
Wir haben ein einziges individuelles SIS in drei aufeinander abgestimmten Oberflächen gebaut: einen öffentlichen Next.js-Kurskatalog, ein Studierendenportal für Einschreibung und Studiengebühren sowie eine Django- + Django-REST-Framework-Admin-Konsole – alles gestützt auf PostgreSQL und eine Stripe-Payments- und Webhooks-Integration, die das SIS zur einzigen maßgeblichen Quelle für jeden Dollar macht.
Die öffentliche Website liefert einen schnellen, SEO-optimierten Next.js-Katalog: Jeder Kurs hat eine eigene indexierbare Detailseite, einen Terminplan, Voraussetzungen, eine Aufschlüsselung der Studiengebühren und einen eingebetteten CTA „Jetzt einschreiben“ – die Marketing-Website ist damit zugleich der Beginn des Einschreibe-Funnels und keine separate Broschüre. Sobald ein Interessent weiterklickt, landet er in einer serverseitig erstellten Stripe-Checkout-Sitzung, in deren Metadaten der richtige Betrag, die Währung, der Gutschein und die Durchgangs-ID hinterlegt sind.
Nach erfolgreicher Zahlung trifft ein Stripe-Webhook bei der Django-API ein, legt den Studierenden idempotent an oder aktualisiert ihn, verknüpft ihn mit dem gewählten Kurstermin, hängt die Quittung an und versendet die Bestätigung per E-Mail – alles in einer einzigen signierten Transaktion. Das Portal des Studierenden zeigt anschließend „Meine Kurse“, „Mein Stundenplan“, „Meine Studiengebühren“ (mit vollständigem Zahlungs- und Erstattungsverlauf) und einen Dokumente-Tab für Zeugnisse, Ausweis und unterzeichnete Vereinbarungen.
Die Django-Admin-Konsole gibt dem Studierendensekretariat einen zentralen Ort für das gesamte Programm: einen Kurstermin anlegen, Kurse und Dozenten zuordnen, Gutscheincodes definieren (prozentual oder pauschal, je Durchgang oder Kurs), Bewerberdaten und Anhänge hochladen, Ankündigungen versenden sowie Einschreibe- und Umsatzberichte abrufen, ohne jemals Excel zu öffnen. Rollen trennen Sekretariat, Finanzen, Dozenten und Administration, sodass jeder Nutzer nur die Oberfläche sieht, die er braucht.
Schließlich haben wir Stripe-Webhooks idempotent angebunden, Studiengebühren-Datensätze per Prüfsumme abgesichert, damit die Finanzabteilung belegen kann, dass SIS und Stripe übereinstimmen, jeden Endpunkt mit Sentry + CloudWatch instrumentiert und jedes signierte PDF bzw. jeden Ausweis-Upload in S3 mit zeitlich begrenzten signierten URLs gespeichert (kein direkter Objektzugriff).
- Öffentlicher, SEO-optimierter Next.js-Kurskatalog mit einer indexierbaren Seite pro Kurs, Terminplan und eingebettetem CTA „Jetzt einschreiben“
- Serverseitig erstellte Stripe-Checkout-Sitzungen mit Durchgangs-ID, Gutscheincode, Währung und Gebührenaufschlüsselung in den Metadaten
- Idempotente Stripe-Webhooks – Studierender, Verknüpfung mit dem Kurstermin, Gebührenzeile und Quittungs-E-Mail werden in einer signierten Transaktion geschrieben
- Studierendenportal mit Meinen Kursen, Meinem Stundenplan, Meinen Studiengebühren (vollständiger Zahlungs- und Erstattungsverlauf) und Dokumenten-Uploads
- Django-Admin-Konsole: Kurstermine, Kurse, Gutscheine (prozentual oder pauschal, je Durchgang oder Kurs), Bewerber, Anhänge, Ankündigungen
- Rollengetrennter Zugriff für Sekretariat, Finanzen, Dozenten und Administration – jeder Nutzer sieht nur die Oberfläche, die er tatsächlich verwendet
- Abstimmung der Studiengebühren per Prüfsumme, damit die Finanzabteilung jederzeit belegen kann, dass SIS und Stripe übereinstimmen – ohne Excel zu öffnen
- S3 + signierte, zeitlich begrenzte URLs für jedes Zeugnis, jeden Ausweis und jede unterzeichnete Vereinbarung – kein direkter Objektzugriff