Praesentation von adam und florian
This commit is contained in:
100
Praesentation_Adam_Gaiswinkler.md
Normal file
100
Praesentation_Adam_Gaiswinkler.md
Normal file
@@ -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.
|
||||||
100
Praesentation_Florian_Edlmayer.md
Normal file
100
Praesentation_Florian_Edlmayer.md
Normal file
@@ -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.
|
||||||
Reference in New Issue
Block a user