diff --git a/Praesentation_Adam_Gaiswinkler.md b/Praesentation_Adam_Gaiswinkler.md new file mode 100644 index 0000000..2a46c16 --- /dev/null +++ b/Praesentation_Adam_Gaiswinkler.md @@ -0,0 +1,100 @@ +--- +marp: true +theme: default +paginate: true +--- + +# Defensio Diplomarbeit: AlumniHub +## Individueller Teil: Adam Gaiswinkler +**Entwicklung von CMS-Modulen & Frontend-Design** + +--- + +# Ausgangslage & Motivation +- **Ausgangssituation**: Bedarf an einer modernen Plattform für den Absolventenverein der HTL Ungargasse. +- **Persönliche Motivation**: + - Steigende Verantwortung durch Teamverkleinerung (von 6 auf 3 Personen). + - Identifikation mit dem Projekt wuchs deutlich. + - Praktische Anwendung von Blazor & ASP.NET in einem realen Umfeld. +- **Individuelle Ziele**: + - Entwicklung von Oqtane-Modulen (Anmeldetool & Hall of Fame). + - Web-Entwicklung mit Fokus auf responsives und nutzerfreundliches UI/UX. + +--- + +# Eingesetzte Technologien +- **Backend & Core**: C#, ASP.NET Core +- **Frontend**: Blazor (für interaktive Weboberflächen direkt in C#) +- **CMS**: Oqtane Framework +- **Styling**: Bootstrap & Custom CSS +- **Spezielle Tools**: QuestPDF (PDF-Generierung), Gitea (Versionskontrolle) +- **Entwicklungsumgebung**: Visual Studio 2022 & JetBrains Rider (macOS) + +--- + +# Umsetzung: Oqtane Theme +- **Ziel**: Modernes, schlichtes Design im Stil der HTL Ungargasse (szu.at). +- **Technische Highlights**: + - Vollständige Eigenentwicklung der Navigationslogik (über `PageState.Pages`). + - Dynamisches Ausblenden von Systemseiten via LINQ. + - **Responsive Design**: Einsatz von CSS Media Queries und einer komplett CSS-basierten Burger-Menü-Lösung. + - Integration eines `ControlPanels` und Cookie-Consent. + +--- + +# Umsetzung: Hall of Fame (1) +- **Zweck**: Sichtbarmachung von erfolgreichen Absolventinnen und Absolventen. +- **UI & UX**: + - Responsive Kartenübersicht der Personen mit Such- und Sortierfunktion (Echtzeit). + - Detailseite im modernen "Glasmorphismus"-Design. +- **Datenerfassung & Workflow**: + - Rich-Text-Editor zur Eingabe des Werdegangs. + - Bild-Upload-System (Live-Vorschau, max. 5 MB) statt manueller URLs. + - Statusverwaltung ("Entwurf" vs. "Veröffentlicht") inkl. Eigentümerprüfung. + +--- + +# Umsetzung: Hall of Fame (2) +- **PDF-Export**: Dynamische Generierung eines ansprechenden Profil-PDFs mittels *QuestPDF*. +- **Moderation**: + - Integriertes Meldesystem (Reporting) direkt über ein separates Interfaces-Paket angesteuert. +- **Datenbank & Persistenz**: + - Entity Framework Core inkl. Migrationen (`HallOfFame` und `HallOfFameReport` Tabellen). + +--- + +# Umsetzung: Anmeldetool für Treffen +- **Zweck**: Vereinfachung der Planung und Teilnehmerverwaltung. +- **Funktion**: + - Klare, farblich getrennte Zusage- und Absage-Buttons. + - Live-Rückmeldung bei Statusänderung dank Blazor. + - Saubere Trennung von UI-Komponente und Backend-API. +- **UX-Optimierung**: + - Fokus auf Overlay-Darstellung und Mobile-Clipping-Vermeidung. + +--- + +# Herausforderungen & Lösungen +- **Plattformwechsel (Windows zu macOS)**: Oqtane ist stark an Windows gekoppelt; gelöst durch Einsatz von JetBrains Rider. +- **Zeitdruck & Infrastruktur-Ausfälle**: + - Probleme mit Hosting (Hetzner). + - **Lösung**: Entwicklung einer schlanken "Übergangslösung" (Node.js/HTML) im Sommer 2025 zur zeitgerechten Event-Abwicklung. +- **Entity Framework Concurrency Issues**: Gelöst durch Transaktions-Gliederung bei Löschvorgängen (Reports vs. Main Entity). + +--- + +# Learnings +- **Technisch**: Tieferes Verständnis von Version Control (Git), CSS/Flexbox (Responsiveness) und C#/Blazor-Tiefen. +- **Methodisch**: Eine klare Aufgabenaufteilung sowie regelmäßige Team-Meetings sind unerlässlich für den Projekterfolg. +- **Persönlich**: Bedeutsamkeit von Eigeninitiative und Verantwortungsübernahme, gerade in schwierigen Projektphasen. + +--- + +# Fazit & Ausblick +- **Erreichtes**: + - Theme ist final in Oqtane integriert und mobil optimiert. + - Hall of Fame und Anmeldetool sind voll funktionstüchtig. +- **Ausblick**: + - Integration einer umfassenden Teilnehmerlisten-Auswertung (Datenbank). + - Limit-Funktion für maximale Anmeldungen bei Veranstaltungen. + - Automatische E-Mail-Erinnerungen für Events. diff --git a/Praesentation_Florian_Edlmayer.md b/Praesentation_Florian_Edlmayer.md new file mode 100644 index 0000000..6c2c6d4 --- /dev/null +++ b/Praesentation_Florian_Edlmayer.md @@ -0,0 +1,100 @@ +--- +marp: true +theme: default +paginate: true +--- + +# Defensio Diplomarbeit: AlumniHub +## Individueller Teil: Florian Edlmayer +**Datensicherheit, Backup-Systeme & Premium-Bereich** + +--- + +# Ausgangslage & Zielsetzung +- **Ausgangssituation**: Fehlen einer sicheren, datenschutzkonformen digitalen Vernetzung der Absolventen der HTL Ungargasse. +- **Mein Beitrag**: + - DSGVO-konforme Datenschutzimplementierung. + - Robuste, automatisierte Backups & Restore-Systeme. + - Externes Login mittels LinkedIn (OAuth 2.0). + - Konzeption und Entwicklung des Premium-Bereichs. +- **Nutzen**: Rechtskonformer Betrieb, hohe Ausfallsicherheit, einfache Nutzung, Förderung des Engagements. + +--- + +# Eingesetzte Technologien +- **Framework**: ASP.NET Core & .NET 8 +- **Datenbanksystem**: PostgreSQL +- **Authentifizierung**: OAuth 2.0 (LinkedIn) +- **Scripting & Automation**: Bash-Skripte für Linux Cronjobs + +--- + +# DSGVO & Datenschutz +- **Notwendigkeit**: Einhaltung gesetzlicher Rahmenbedingungen (DSGVO, DSG). +- **Umsetzung**: + - Erstellung und Einbindung einer rechtskonformen Datenschutzerklärung. + - **Datenminimierung**: Es werden nur absolut notwendige Daten für den Vereinszweck erhoben. + - **Vertraulichkeit**: TLS/HTTPS-Verschlüsselung, lokales Hosting der Daten in Österreich (LiveDesign). + - Sicherstellung aller Betroffenenrechte (Auskunft, Löschung). + +--- + +# Backup- & Restore-Systeme (1) +- **Problem**: Schutz der Daten vor Hardwareausfällen, Softwarefehlern oder Cyberangriffen. +- **Lösung: Vollautomatisiertes Backup-Skript** + - **Cronjob** führt Skript nachtschlafend (`02:30 Uhr`) aus. + - Sichert die `PostgreSQL`-Datenbank im Custom-Format (`pg_dump -Fc`). + - Komprimiert den gesamten App-Dateibaum mittels `tar -cvpzf`. + - Alle Backups erhalten UTC-Zeitstempel für ordentliche Strukturierung. + +--- + +# Backup- & Restore-Systeme (2) +- **Retention Management**: + - Automatische Bereinigung alter Backups (Rotation). Nur die neuesten 30 Backups (`RETAIN=30`) bleiben vorhanden, um Speicherplatz zu sparen. +- **Restore-Skript**: + - Kontrollierter Wiederherstellungsprozess. + - Integrierte Sicherheitsabfrage (`ja/nein`) vor dem Überschreiben. + - Umbenennen bestehender Ordner als "Rückversicherung". + - Neuanlage der Datenbank (`dropdb` / `createdb`) & Einspielen via `pg_restore`. + +--- + +# Authentifizierung mit LinkedIn (OAuth 2.0) +- **Ziel**: Reduzierung von Registrierungshürden und Steigerung der Plattformsicherheit (keine Passwörter im eigenen System speichern). +- **Ablauf**: + - Nutzer klickt auf "Via LinkedIn Anmelden". + - Weiterleitung an LinkedIn -> Freigabe durch den Nutzer. + - Oqtane External Login fängt Authorization Code ab, tauscht diesen gegen ein Access Token. + - Automatisches Mapping auf lokales Benutzerkonto mithilfe der definierten *Claims* (Name, System-ID). + +--- + +# Der Premium-Bereich (1) +- **Zweck**: Anreiz für aktives Engagement im Absolventenverein. +- **Ingenieur-Antrags-Workflow**: + - Nutzer können *Ingenieur-Anträge* (PDF) via Oqtane FileManager hochladen (`Entity: EngineerApplication`). + - Nach Prüfung und Freigabe durch Admins (`Approved`) wird automatisch für 12 Monate der Premium-Status vergeben (`UserPremium`). +- **Bibliothek**: + - Premium-Mitglieder können eine Übersicht aller genehmigten Vorzeige-Anträge einsehen. + +--- + +# Der Premium-Bereich (2) +- **Mitgliedersuche & Kontakt**: + - Gezielte, datensparsame Suchfunktion nach anderen Absolventen. + - Die Suche filtert sensible Daten serverseitig heraus, bevor es zum Client geschickt wird. + - **Kontakt-Mechanismus**: In-App Nachrichtensystem *ohne* Preisgabe der persönlichen E-Mail-Adresse. Oqtane übernimmt als Broker die Zustellung. +- **Architektur**: + - Umsetzung über EF Core (Tabellen: `UserPremium`, `EngineerApplication`, `PremiumEvent` wg. Audit-Trails). + - Rollenbasierte Zugriffskontrollen tief in der Service-Schicht (`IsAuthorized`). + +--- + +# Fazit & Ausblick +- **Erreichtes**: + - Sensible Mitglieder-Daten sind DSGVO-konform geschützt. + - Die Betriebssicherheit wird durch fehlerresistente Bash-Backups bewahrt. + - Der nahtlose Login mit LinkedIn reduziert Barrieren stark. + - Der Premium-Bereich samt Ingenieur-Anträgen stiftet echten Mehrwert für die Alumni-Community. +- **Ausblick**: Evaluierung weiterführender OAuth-Anbieter sowie Ausbau der Premium-Pfeiler zur Steigerung der Mitglieds-Dauerhaftigkeit.