Caner Akgül
Architecture
Table of contents
Overview
Die Kanban Web App ist eine Flask-basierte Anwendung zur Verwaltung von Projekten und Aufgaben nach der Kanban-Methode.
Registrierte Benutzer können Projekte erstellen, Aufgaben (Karten) verwalten, Spalten anpassen und Teammitglieder hinzufügen.
Alle Daten werden in einer lokalen SQLite-Datenbank gespeichert.
Die Architektur folgt dem Model-View-Controller (MVC) Muster:
- Model: SQLite-Datenbank mit Tabellen für Benutzer, Projekte, Spalten, Karten und Mitglieder
- View: Jinja2-Templates mit Bootstrap 5 für ein modernes, responsives Design
- Controller: Flask-Routen für Authentifizierung, Projekt- und Aufgabenverwaltung
Die App ist vollständig serverseitig umgesetzt und benötigt kein JavaScript.
Sie eignet sich besonders für Lernzwecke, kleine Teams und Prototyping.
Komponenten und Datenfluss
1. Authentifizierung (app.py
)
- Registrierung & Login: Benutzer können sich registrieren und anmelden
- Session-Management: Speicherung der Benutzersitzung mit Flask-Sessions
- Logout: Löscht die Session-Daten und leitet zurück zur Login-Seite
2. Dashboard
- Projektübersicht: Anzeige aller Projekte des angemeldeten Benutzers
- Projekt-Erstellung: Neue Projekte mit Standardspalten (To Do, In Progress, Review, Done)
- Projekt-Löschung: Entfernt ein Projekt inklusive aller zugehörigen Daten
3. Projekt-Ansicht
- Spaltenverwaltung: Neue Spalten hinzufügen, umbenennen oder löschen
- Kartenverwaltung: Aufgaben erstellen, bearbeiten, löschen oder in andere Spalten verschieben
- Mitglieder hinzufügen: Weitere Benutzer einem Projekt zuordnen
4. Datenbank (db.py
)
- SQLite-Datenbank: Eine lokale Datei
kanban.db
speichert alle Informationen - Tabellenstruktur:
users
: Benutzerkontenprojects
: Projektecolumns
: Spalten innerhalb eines Projektscards
: Aufgaben (Karten)project_members
: Zuordnung von Benutzern zu Projekten
- Foreign Keys: Sorgen für Datenkonsistenz (z. B. Karten gehören zu Spalten, Spalten zu Projekten)
5. Frontend (templates/
& static/
)
- Jinja2-Templates: Dynamische HTML-Seiten mit Flask-Datenbindung
- Bootstrap 5: Responsives, modernes Design
Datenfluss
- Benutzer-Aktion: Benutzer registriert sich, loggt ein oder erstellt ein Projekt
- Request-Verarbeitung: Flask empfängt und verarbeitet die Anfrage
- Controller-Logik:
app.py
entscheidet, welche Daten abgefragt oder verändert werden - Datenbankzugriff:
db.py
führt SQL-Befehle auf der SQLite-Datenbank aus - Template-Rendering: Jinja2 erzeugt dynamisch HTML-Seiten mit aktuellen Daten
- Antwort: Die fertige HTML-Seite wird an den Browser gesendet
Codemap
Wichtige Dateien:
app.py
: Zentrale Flask-App mit allen Routen (Login, Dashboard, Projekte)db.py
: Verwaltung und Initialisierung der SQLite-Datenbanktemplates/
: HTML-Templates mit Jinja2requirements.txt
: Abhängigkeiten (Flask, Bootstrap)
Cross-cutting Concerns
Session-Management
- Über Flask-Sessions realisiert
- Automatische Weiterleitung zum Login bei fehlender Authentifizierung
Flash-Messages
- Benutzerfeedback bei Aktionen (Erfolg, Fehler, Warnung)
- Integration in das Basis-Template
Responsive Design
- Bootstrap 5 sorgt für ein flexibles, modernes Layout
- Optimiert für Desktop, Tablet und Smartphone
Datenkonsistenz
- Foreign Keys und Transaktionen garantieren korrekte Beziehungen
- Automatische Initialisierung über
flask --app app.py init-db
Sicherheit
- Geschützte Routen über
@login_required
- Zugriff auf Projekte nur für Mitglieder
Die Architektur ist klar strukturiert, einfach erweiterbar und bietet eine solide Grundlage für spätere Erweiterungen (z. B. Drag-and-Drop, API oder Rollenverwaltung).
Weitere Details zur Implementierung befinden sich in den Design Decisions.