Diplomarbeitsbuch-individueller-teil-Adam-Gaiswinkler.md aktualisiert
Some checks failed
Word Count / count-words (push) Failing after 32s
Some checks failed
Word Count / count-words (push) Failing after 32s
This commit is contained in:
@@ -10,7 +10,7 @@ Zu Beginn des Projekts war meine persönliche Motivation überschaubar. Wie viel
|
||||
|
||||
Das änderte sich im Laufe des Projekts grundlegend – und zwar durch einen Umstand, den ich anfangs nicht als Chance gesehen hätte: die Teamverkleinerung. Als das Team von ursprünglich sechs auf drei Personen verkleinert wurde, änderte sich meine Rolle schlagartig. Plötzlich trug ich deutlich mehr Verantwortung – nicht nur für meinen eigenen Bereich, sondern auch für das Gesamtprojekt. Aufgaben, die ursprünglich andere übernehmen sollten, lagen nun in meinen Händen. Diese Situation zwang mich, proaktiver zu handeln, eigenständiger zu entscheiden und tiefer in die Materie einzutauchen als ursprünglich geplant.
|
||||
|
||||
Genau in diesem Moment begann mein Interesse zu wachsen. Je mehr Verantwortung ich übernahm, desto mehr identifizierte ich mich mit dem Projekt und seinen Zielen. Ich merkte, dass die Entscheidungen die ich traf direkte Auswirkungen auf das Endergebnis hatten – und das motivierte mich, die Arbeit wirklich gut zu machen und nicht nur fertigzustellen.
|
||||
Genau in diesem Moment begann mein Interesse zu wachsen. Je mehr Verantwortung ich übernahm, desto mehr identifizierte ich mich mit dem Projekt und seinen Zielen. Ich merkte, dass die Entscheidungen, die ich traf, direkte Auswirkungen auf das Endergebnis hatten – und das motivierte mich, die Arbeit wirklich gut zu machen und nicht nur fertigzustellen.
|
||||
|
||||
Die technische Herausforderung, eine moderne Webanwendung mit Blazor und ASP.NET umzusetzen, sowie die Möglichkeit, ein echtes System für eine reale Organisation zu entwickeln, wurden zur echten Motivation. Die Aufgabenstellung bot mir die Chance, theoretisches Wissen aus dem Unterricht in einem praxisnahen Umfeld anzuwenden und gleichzeitig einen konkreten Mehrwert für den Absolventenverein zu schaffen. Rückblickend war die Teamverkleinerung – obwohl sie damals als Problem wahrgenommen wurde – einer der wichtigsten Faktoren für meine persönliche Entwicklung im Rahmen dieses Projekts.
|
||||
|
||||
@@ -38,9 +38,7 @@ Das Datenbankdesign sowie die Infrastruktur und das Server-Setup waren nicht Tei
|
||||
|
||||
## 2. Technologischer Überblick
|
||||
|
||||
Herzlich willkommen zu meinem individuellen Teil der Diplomarbeit. In diesem Abschnitt dokumentiere ich meinen persönlichen Beitrag zum Projekt AlumniHub – konkret die Entwicklung des Anmeldetools und des Hall-of-Fame-Moduls für das Content-Management-System Oqtane.
|
||||
|
||||
Im Rahmen meiner Arbeit habe ich verschiedene Technologien und Werkzeuge eingesetzt, die in diesem Kapitel kurz vorgestellt werden. Dabei habe ich bewusst darauf geachtet, die Erklärungen so zu gestalten, dass sie auch für Leserinnen und Leser ohne technischen Hintergrund verständlich sind. Wer bereits Erfahrung in der Webentwicklung mitbringt, wird die einzelnen Technologien möglicherweise schon kennen – die Beschreibungen sollen jedoch in jedem Fall nachvollziehbar machen, welche Rolle die jeweilige Technologie in meiner Arbeit gespielt hat.
|
||||
In diesem Kapitel werden die Technologien und Werkzeuge vorgestellt, die für die Entwicklung des Anmeldetools, des Hall-of-Fame-Moduls und des Oqtane-Themes eingesetzt wurden. Die Beschreibungen sind dabei so gestaltet, dass sie auch für Leserinnen und Leser ohne technischen Hintergrund verständlich sind.
|
||||
|
||||
### 2.1 C# und ASP.NET Core
|
||||
|
||||
@@ -139,7 +137,7 @@ Darüber hinaus wurde das ControlPanel von Oqtane integriert, das Administratori
|
||||
|
||||
### 3.3 Herausforderungen
|
||||
|
||||
Die größte Herausforderung bei der Theme-Entwicklung war die Umsetzung einer individuellen Navigation. Die von Oqtane bereitgestellte Standardkomponente generierte das Burger-Menü automatisch und bot keine Möglichkeit, dieses individuell anzupassen. Da ein eigenes, maßgeschneidertes Burger-Menü benötigt wurde, das sich nahtlos in das Theme-Design einfügt, wurde die Standardkomponente vollständig ersetzt und eine eigene Navigation implementiert. Durch den direkten Zugriff auf `PageState.Pages` und eine LINQ-basierte Filterlogik konnte eine vollständig kontrollierbare und flexibel gestaltbare Navigation realisiert werden. Dieser Ansatz erforderte zwar mehr Entwicklungsaufwand, ermöglichte dafür aber die gewünschte individuelle Gestaltung des Burger-Menüs.
|
||||
Die eigene Implementierung der Navigation über `PageState.Pages` und eine LINQ-basierte Filterlogik erwies sich als die richtige Entscheidung. Sie löste nicht nur das Problem der fehlenden Anpassbarkeit der Standardkomponente, sondern brachte gleichzeitig einen wesentlichen Mehrwert: Die Navigation ist vollständig wartungsfrei. Werden im CMS neue Seiten angelegt, erscheinen diese automatisch im Menü – ohne dass eine einzige Zeile Code angepasst werden muss. Zudem ermöglichte dieser Ansatz die vollständige Kontrolle über das Erscheinungsbild des Burger-Menüs, was mit der Standardkomponente nicht möglich gewesen wäre.
|
||||
|
||||
---
|
||||
|
||||
@@ -169,11 +167,11 @@ Die Datenübertragung erfolgt nach dem Prinzip der sauberen Komponentenarchitekt
|
||||
|
||||
Die im Anmeldetool erfassten Daten bilden die Grundlage für die Verwaltung und Auswertung von Veranstaltungsteilnahmen. Organisatoren können auf Basis der gespeicherten An- und Abmeldungen die Teilnehmerzahlen einsehen und die Planung entsprechend anpassen.
|
||||
|
||||
Die Architektur des Moduls ist bereits auf zukünftige Erweiterungen ausgelegt. Geplante Erweiterungen umfassen eine übersichtliche Teilnehmerliste mit Namen und Anmeldestatus, die Möglichkeit eine maximale Teilnehmeranzahl je Veranstaltung festzulegen sowie eine direkte Speicherung und Auswertung der Anmeldedaten in einer Datenbank. Durch diese Erweiterungen soll das Anmeldetool künftig nicht nur als Interaktionselement für Teilnehmer, sondern auch als vollwertiges Verwaltungswerkzeug für Veranstaltungsorganisatoren dienen.
|
||||
Die Architektur des Moduls ist bereits auf zukünftige Erweiterungen ausgelegt. Geplante Erweiterungen umfassen eine übersichtliche Teilnehmerliste mit Namen und Anmeldestatus, die Möglichkeit, eine maximale Teilnehmeranzahl je Veranstaltung festzulegen sowie eine direkte Speicherung und Auswertung der Anmeldedaten in einer Datenbank. Durch diese Erweiterungen soll das Anmeldetool künftig nicht nur als Interaktionselement für Teilnehmer, sondern auch als vollwertiges Verwaltungswerkzeug für Veranstaltungsorganisatoren dienen.
|
||||
|
||||
#### 4.1.5 UX-Überlegungen (User Experience)
|
||||
|
||||
Ein zentraler Aspekt bei der Entwicklung des Anmeldetools war die Benutzerfreundlichkeit der Oberfläche. UX (User Experience) bezeichnet dabei die Gesamtheit aller Erfahrungen, die ein Benutzer bei der Interaktion mit einer Anwendung macht – von der visuellen Gestaltung über die Bedienbarkeit bis hin zur allgemeinen Zufriedenheit mit dem System. Die Module wurden so gestaltet, dass Nutzerinnen und Nutzer die Funktionen ohne zusätzliche Schulung verwenden können. Eine klare Struktur, eine intuitive Bedienung sowie ein konsistentes Erscheinungsbild innerhalb des bestehenden Systems standen dabei im Vordergrund.
|
||||
Ein zentraler Aspekt bei der Entwicklung des Anmeldetools war die Benutzerfreundlichkeit der Oberfläche. UX (User Experience) bezeichnet dabei die Gesamtheit aller Erfahrungen, die ein Benutzer bei der Interaktion mit einer Anwendung macht – von der visuellen Gestaltung über die Bedienbarkeit bis hin zur allgemeinen Zufriedenheit mit dem System. Die Module wurden so gestaltet, dass Benutzerinnen und Benutzer die Funktionen ohne zusätzliche Schulung verwenden können. Eine klare Struktur, eine intuitive Bedienung sowie ein konsistentes Erscheinungsbild innerhalb des bestehenden Systems standen dabei im Vordergrund.
|
||||
|
||||
Während der Testphase wurden mehrere visuelle Darstellungsprobleme identifiziert und behoben. Dazu zählten Fehler bei der Overlay-Darstellung – insbesondere in Bezug auf Hintergrundfarben, Transparenzen und z-Index-Ebenen – sowie sogenannte Clipping-Fehler auf mobilen Endgeräten, bei denen Inhalte teilweise abgeschnitten oder außerhalb des sichtbaren Bereichs angezeigt wurden. Die Layoutstruktur und Elementgrößen wurden angepasst, ausreichende Abstände zu Seitenrändern sichergestellt und Tests auf verschiedenen Browser- und Gerätevarianten durchgeführt.
|
||||
|
||||
@@ -281,6 +279,8 @@ Die Datenbankstruktur wird über Entity Framework Core Migrationen versioniert v
|
||||
|-----------|----------------|--------|
|
||||
| `InitializeModule` | `01.00.00.00` | Erstellt die Haupttabelle mit allen Grundspalten sowie den Audit-Spalten |
|
||||
| `AddReportingColumns` | `01.00.00.02` | Erweitert die Haupttabelle um die Spalten `IsReported` und `ReportReason` |
|
||||
|
||||
> **Hinweis:** Version `01.00.00.01` wurde im Entwicklungsprozess übersprungen, da eine fehlerhafte Migration erstellt und anschließend wieder gelöscht werden musste.
|
||||
| `AddReportTable` | `01.00.00.03` | Erstellt die eigenständige Report-Tabelle mit Fremdschlüssel zur Haupttabelle |
|
||||
|
||||
#### Implementierungsdetails und Problemlösungen
|
||||
@@ -289,7 +289,7 @@ Während der Entwicklung traten mehrere technische Herausforderungen auf, die im
|
||||
|
||||
**Bild-Upload-System**
|
||||
|
||||
In der ursprünglichen Version des Moduls mussten Benutzerinnen und Benutzer eine Bild-URL manuell in ein Textfeld eingeben. Dies war wenig benutzerfreundlich und erforderte, dass Bilder zunächst anderweitig hochgeladen und verlinkt werden mussten. Das implementierte Bild-Upload-System ersetzt dies durch eine Blazor-`InputFile`-Komponente mit Live-Vorschau, Fortschrittsanzeige und Lösch-Button. Die Upload-Methode prüft die Dateigröße (maximal 5 MB), öffnet die Datei als Stream und übermittelt sie als `MultipartFormDataContent` an den Server, der den Dateityp serverseitig validiert, einen UUID-Dateinamen generiert und die Datei speichert. Das System unterstützt beide Blazor-Rendering-Modi.
|
||||
In der ursprünglichen Version des Moduls mussten Benutzerinnen und Benutzer eine Bild-URL manuell in ein Textfeld eingeben. Dies war wenig benutzerfreundlich und erforderte, dass Bilder zunächst anderweitig hochgeladen und verlinkt werden mussten. Das implementierte Bild-Upload-System ersetzt dies durch eine Blazor-`InputFile`-Komponente mit Live-Vorschau, Fortschrittsanzeige und Lösch-Button. Die Upload-Methode prüft die Dateigröße (maximal 5 MB), öffnet die Datei als Stream und übermittelt sie als `MultipartFormDataContent` an den Server, der den Dateityp serverseitig validiert, einen UUID-Dateinamen (Universally Unique Identifier – eine zufällig generierte, global eindeutige Zeichenkette) generiert und die Datei speichert. Das System unterstützt beide Blazor-Rendering-Modi.
|
||||
|
||||
**Concurrency Exception beim Löschen**
|
||||
|
||||
@@ -333,9 +333,9 @@ Diese bewusste Reduktion auf das Wesentliche war jedoch kein Nachteil, sondern e
|
||||
|
||||
#### Technische Probleme
|
||||
|
||||
Eine der größten technischen Herausforderungen im gesamten Projektverlauf war der Zeitdruck, der insbesondere im Vorfeld des ersten Absolventenstreffens spürbar war.
|
||||
Eine der größten technischen Herausforderungen im gesamten Projektverlauf war der Zeitdruck, der insbesondere im Vorfeld des ersten Absolventenstreffens spürbar war. Da AlumniHub zu diesem Zeitpunkt noch nicht einsatzbereit war, musste die Übergangslösung in sehr kurzer Zeit konzipiert, entwickelt und in Betrieb genommen werden. Dieser Zeitdruck führte dazu, dass keine ausreichende Zeit für gründliches Testen oder für die Umsetzung zusätzlicher Funktionen blieb.
|
||||
|
||||
Ein weiteres technisches Problem ergab sich durch den Wechsel von Windows auf macOS während der Entwicklung. Da Oqtane primär für Windows entwickelt ist und die macOS-Unterstützung veraltet bzw. nicht vollständig angepasst ist, traten nach dem Plattformwechsel Build-Fehler auf und Oqtane startete zunächst nur mit Fehlern. Diese Probleme erschwerten die Weiterentwicklung erheblich, da zunächst die Entwicklungsumgebung stabilisiert werden musste, bevor die eigentliche Arbeit an den Modulen fortgesetzt werden konnte. Durch den Wechsel auf Google Antigravity als IDE konnten die Probleme schließlich gelöst und die Entwicklung auf macOS erfolgreich fortgesetzt werden. Da AlumniHub zu diesem Zeitpunkt noch nicht einsatzbereit war, musste die Übergangslösung in sehr kurzer Zeit konzipiert, entwickelt und in Betrieb genommen werden. Dieser Zeitdruck führte dazu, dass keine ausreichende Zeit für gründliches Testen oder für die Umsetzung zusätzlicher Funktionen blieb.
|
||||
Ein weiteres technisches Problem ergab sich durch den Wechsel von Windows auf macOS während der Entwicklung. Da Oqtane primär für Windows entwickelt ist und die macOS-Unterstützung veraltet bzw. nicht vollständig angepasst ist, traten nach dem Plattformwechsel Build-Fehler auf und Oqtane startete zunächst nur mit Fehlern. Diese Probleme erschwerten die Weiterentwicklung erheblich, da zunächst die Entwicklungsumgebung stabilisiert werden musste, bevor die eigentliche Arbeit an den Modulen fortgesetzt werden konnte. Durch den Wechsel auf Google Antigravity als Entwicklungsumgebung konnten die Build-Probleme schließlich behoben und die Arbeit an den Modulen erfolgreich fortgesetzt werden.
|
||||
|
||||
Ein weiteres technisches Problem betraf das Hosting von Oqtane auf dem Hetzner-Server. Die Einrichtung und der Betrieb von Oqtane auf dem Server bereiteten unerwartete Schwierigkeiten, die den regulären Entwicklungsfortschritt verlangsamten. Da dieser Bereich nicht zum eigenen Aufgabengebiet gehörte, konnten die genauen Ursachen nicht vollständig nachvollzogen werden. Die Probleme wirkten sich jedoch auf den gesamten Zeitplan des Projekts aus und waren mitverantwortlich dafür, dass AlumniHub zum Zeitpunkt des ersten Treffens noch nicht fertig war.
|
||||
|
||||
@@ -397,3 +397,48 @@ Ein häufiges Feedback war, dass die Unterscheidung zwischen Zusage und Absage a
|
||||
|
||||
|
||||
---
|
||||
## 7. Fazit und Ausblick
|
||||
|
||||
### 7.1 Zielerreichung
|
||||
|
||||
Rückblickend auf das Projekt AlumniHub lässt sich festhalten, dass die zentralen Ziele meines individuellen Aufgabenbereichs erfolgreich umgesetzt wurden.
|
||||
|
||||
Das **Hall-of-Fame-Modul** wurde vollständig fertiggestellt. Es umfasst die Übersichtsseite mit responsivem Kartenlayout, die Detailseite mit Glasmorphismus-Design, die Edit-Seite mit Rich-Text-Editor und Bild-Upload, die Meldefunktion sowie den PDF-Export mit QuestPDF. Das Modul ist in das Oqtane-CMS integriert und produktiv einsetzbar.
|
||||
|
||||
Das **Anmeldetool** wurde ebenfalls implementiert und ist funktionsfähig. Grundfunktionen wie Zusage und Absage zu Veranstaltungen sowie die responsive Darstellung sind vollständig umgesetzt. Weiterführende Funktionen wie eine vollständige Teilnehmerliste mit Datenbankanbindung und die Möglichkeit, maximale Teilnehmerzahlen festzulegen, sind architektonisch bereits vorbereitet, jedoch noch nicht vollständig implementiert.
|
||||
|
||||
Das **Theme** wurde von einem anderen Teammitglied entwickelt und ist ebenfalls fertiggestellt. Der Wechsel des Hostings von Hetzner zu LiveDesign hat die Stabilität der Plattform deutlich verbessert.
|
||||
|
||||
Insgesamt bin ich mit dem erreichten Stand zufrieden – insbesondere angesichts der Herausforderungen durch die Teamverkleinerung, den Plattformwechsel von Windows auf macOS und die technischen Probleme mit dem ursprünglichen Hosting.
|
||||
|
||||
### 7.2 Ausblick
|
||||
|
||||
Für die Weiterentwicklung der Plattform gibt es mehrere sinnvolle nächste Schritte. Im Bereich des Anmeldetools wäre die Implementierung einer vollständigen Teilnehmerliste mit direkter Datenbankanbindung der wichtigste nächste Schritt. Ergänzend dazu sollte die Möglichkeit geschaffen werden, maximale Teilnehmerzahlen pro Veranstaltung festzulegen, sodass Organisatoren die Kapazität von Treffen besser steuern können.
|
||||
|
||||
Langfristig könnte die Plattform um eine automatische E-Mail-Benachrichtigung erweitert werden, die Mitglieder an bevorstehende Veranstaltungen erinnert. Auch eine Exportfunktion für die Anmeldedaten – beispielsweise als CSV oder PDF – wäre für die Vereinsverwaltung hilfreich.
|
||||
|
||||
AlumniHub bietet als Plattform eine solide Grundlage, die in den kommenden Jahren kontinuierlich erweitert werden kann, um den Absolventenverein der HTL Ungargasse langfristig digital zu unterstützen.
|
||||
|
||||
---
|
||||
|
||||
## 8. Quellen
|
||||
|
||||
Microsoft: ASP.NET Core Documentation. https://learn.microsoft.com/en-us/aspnet/core/ [Zugriff: 17.03.2026]
|
||||
|
||||
Microsoft: Blazor Documentation. https://learn.microsoft.com/en-us/aspnet/core/blazor/ [Zugriff: 17.03.2026]
|
||||
|
||||
Microsoft: Entity Framework Core – Migrations. https://learn.microsoft.com/en-us/ef/core/managing-schemas/migrations/ [Zugriff: 17.03.2026]
|
||||
|
||||
Oqtane Framework: https://www.oqtane.org/ [Zugriff: 17.03.2026]
|
||||
|
||||
Oqtane Developer Documentation: https://docs.oqtane.org/ [Zugriff: 17.03.2026]
|
||||
|
||||
QuestPDF Open Source Library: https://www.questpdf.com/ [Zugriff: 17.03.2026]
|
||||
|
||||
Bootstrap Framework: https://getbootstrap.com/ [Zugriff: 17.03.2026]
|
||||
|
||||
Gitea – Open Source Git Service: https://about.gitea.com/ [Zugriff: 17.03.2026]
|
||||
|
||||
LiveDesign – Hosting, Design & Branding: https://livedesign.at/ [Zugriff: 17.03.2026]
|
||||
|
||||
Google Antigravity IDE: https://antigravity.dev/ [Zugriff: 17.03.2026]
|
||||
Reference in New Issue
Block a user