← All projects

Structured Comfort Feedback Platform

A university software-engineering project built around a real-world building-technology use case - a maintainable Flask application for collecting and managing structured user feedback.

  • Python
  • Flask
  • Jinja2
  • SQLAlchemy
  • Alembic
  • PostgreSQL
  • REST API
  • Flask-WTF
  • Docker
  • Docker Compose
  • pytest
  • pytest-cov
  • Playwright
  • GitLab CI/CD

Overview

A university software-engineering project, developed around a real-world building-technology use case: collecting structured feedback from the people who actually occupy a space, through a web application maintainable enough to keep running afterwards.

The course required a substantial Flask application. The interesting part was treating it as production software rather than coursework - which is the reason the engineering practices below exist at all.

Architecture

Backend (Flask + PostgreSQL)

  • Application-factory structure with blueprints and Jinja2 templating
  • SQLAlchemy models with Alembic/Flask-Migrate migrations; PostgreSQL in production, SQLite under test
  • Role-based access control through view decorators
  • Administrative workflows with full CRUD and CSV export
  • Email invitation and reminder workflow
  • REST-style integration with an external data source, plus a simulator so the system stayed developable and testable in isolation

Frontend

  • Server-rendered views with Plotly.js charts
  • A custom internationalisation layer covering English and German
  • Responsive layout for desktop and mobile use

Security

Hardened deliberately rather than by default:

  • CSRF protection on all POST forms
  • Rate limiting on authentication and globally
  • Salted password hashing
  • HttpOnly and SameSite cookie flags, plus security headers
  • Parameterised queries throughout

Testing and delivery

Unit, integration and end-to-end layers using pytest, pytest-cov and Playwright. Containerised with Docker Compose and shipped through GitLab CI/CD.

What it built

Ownership across the whole span of a web application: backend development, data persistence, administrative workflows, security-minded implementation, automated testing at three levels, and the deployment tooling to ship it.