Plattform für strukturiertes Komfort-Feedback
Ein Software-Engineering-Projekt an der Hochschule mit einem realen gebäudetechnischen Anwendungsfall: eine wartbare Flask-Anwendung zum Erfassen und Verwalten von strukturiertem Nutzerfeedback.
Überblick
Ein Software-Engineering-Projekt an der Hochschule, entwickelt rund um einen realen gebäudetechnischen Anwendungsfall: strukturiertes Feedback von den Menschen einzuholen, die einen Raum tatsächlich nutzen, über eine Webanwendung, die wartbar genug ist, um danach weiterzulaufen.
Die Lehrveranstaltung verlangte eine umfangreiche Flask-Anwendung. Interessant war, sie wie Software für den Produktivbetrieb zu behandeln statt wie eine Studienarbeit; genau deshalb gibt es die unten beschriebenen Engineering-Praktiken überhaupt.
Architektur
Backend (Flask + PostgreSQL)
- Application-Factory-Struktur mit Blueprints und Jinja2-Templates
- SQLAlchemy-Modelle; PostgreSQL im Betrieb, SQLite in den Tests
- Rollenbasierte Zugriffskontrolle über View-Decorators
- Administrative Abläufe mit vollständigem CRUD und CSV-Export
- Ablauf für E-Mail-Einladungen und -Erinnerungen
- REST-artige Anbindung an eine externe Datenquelle, dazu ein Simulator, damit das System isoliert entwickelt und getestet werden konnte
Frontend
- Serverseitig gerenderte Ansichten mit Plotly.js-Diagrammen
- Eine eigene Internationalisierungsschicht für Englisch und Deutsch
- Responsives Layout für Desktop und Mobilgeräte
Sicherheit
Bewusst gehärtet, nicht nur durch Voreinstellungen:
- CSRF-Schutz für alle POST-Formulare
- Rate Limiting bei der Authentifizierung und global
- Gesalzenes Passwort-Hashing
- Cookie-Flags HttpOnly und SameSite, dazu Security-Header
- Durchgehend parametrisierte Abfragen
Tests und Auslieferung
Tests auf Unit-, Integrations- und End-to-End-Ebene mit pytest, pytest-cov und Playwright. Mit Docker Compose containerisiert und über GitLab CI/CD ausgeliefert.
Was ich daraus mitnehme
Verantwortung für die gesamte Spannweite einer Webanwendung: Backend-Entwicklung, Datenhaltung, administrative Abläufe, sicherheitsbewusste Umsetzung, automatisierte Tests auf drei Ebenen und die Werkzeuge, um alles auszuliefern.