Compare commits

...

18 Commits

Author SHA1 Message Date
ea9479628c Testing...
Some checks failed
build-debian-package / Build the debian package (push) Failing after 36s
Word Count / count-words (push) Failing after 1m1s
2026-04-17 10:22:23 +02:00
aa704577ad Use Prebuilt Container
Some checks failed
Word Count / count-words (push) Failing after 1m35s
2026-04-16 23:07:22 +02:00
15eb9d9d5e Install Mermaid CLI
Some checks failed
build-debian-package / Build the debian package (push) Failing after 7m45s
Word Count / count-words (push) Failing after 37s
2026-04-16 22:34:42 +02:00
f11fcb68fe Fix: pipeline
Some checks failed
Word Count / count-words (push) Failing after 35s
2026-04-16 22:24:19 +02:00
8da8374a1b kürzere version der präsi
Some checks failed
Word Count / count-words (push) Failing after 37s
2026-04-16 21:31:38 +02:00
d397f0cd60 Revert addition of presentation to lib folder
Some checks failed
Word Count / count-words (push) Failing after 38s
2026-04-16 21:18:18 +02:00
b450fd6475 Add concise presentation to lib folder
Some checks failed
Word Count / count-words (push) Failing after 34s
2026-04-16 21:17:16 +02:00
6789fa6f9d install texlive as well
Some checks failed
Word Count / count-words (push) Has been cancelled
build-debian-package / Build the debian package (push) Failing after 2m11s
2026-04-16 19:23:12 +02:00
2061cdc218 Test
Some checks failed
build-debian-package / Build the debian package (push) Failing after 3m24s
Word Count / count-words (push) Failing after 36s
2026-04-16 19:16:52 +02:00
6b0c4f7884 Update: Tag
Some checks failed
build-debian-package / Build the debian package (push) Failing after 14s
Word Count / count-words (push) Failing after 40s
2026-04-16 19:13:54 +02:00
ad47997aab New: Pandoc pipeline
Some checks failed
Word Count / count-words (push) Failing after 43s
2026-04-16 19:12:42 +02:00
b337833410 New: use Fork 2026-04-16 19:11:50 +02:00
69d898bc86 Adam Part changes
Some checks failed
Word Count / count-words (push) Failing after 38s
2026-04-16 17:35:03 +02:00
29fda2257b From TD to LR
Some checks failed
Word Count / count-words (push) Failing after 33s
2026-04-16 17:31:41 +02:00
caedd3ba9e Merge branch 'main' of https://git.kocoder.xyz/Diplomarbeit-Absolventenverein/pm
Some checks failed
Word Count / count-words (push) Failing after 36s
2026-04-16 17:30:06 +02:00
710667481b Überarbeitung 2026-04-16 17:29:57 +02:00
2e4353bf8e Update: submodule
Some checks failed
Word Count / count-words (push) Failing after 36s
2026-04-16 16:57:17 +02:00
a38cbd0dfe Refinements des Layouts und individueller Teil Konstantin 2026-04-16 16:56:34 +02:00
10 changed files with 170 additions and 87 deletions

View File

@@ -0,0 +1,28 @@
name: build-debian-package
on:
push:
tags:
- "doc-*"
jobs:
build:
name: Build the debian package
runs-on: ubuntu-latest
steps:
- name: "Git clone"
run: git clone ${{ gitea.server_url }}/${{ gitea.repository }}.git .
- name: "Git checkout"
run: git checkout "${{ gitea.sha }}"
- name: "Submodules auschecken"
run: git submodule update --init
- uses: docker://pandoc/core:3.8
with:
args: "--help" # gets appended to pandoc command
- name: "Build .deb"
run: cd ./Defensio && ./pandoc.sh
- name: "Create release"
uses: akkuman/gitea-release-action@v1
with:
files: |-
./Defensio/defensio.pdf

2
.gitmodules vendored
View File

@@ -1,6 +1,6 @@
[submodule "Defensio/libs/awesome-beamer"]
path = Defensio/libs/awesome-beamer
url = https://codeberg.org/LukasPietzschmann/awesome-beamer
url = https://git.kocoder.xyz/kocoded/awesome-beamer
[submodule "Defensio/libs/smile"]
path = Defensio/libs/smile
url = https://codeberg.org/LukasPietzschmann/smile

View File

@@ -2,6 +2,17 @@
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\makeatletter
\newsavebox\pandoc@box
\newcommand*\pandocbounded[1]{% scales image to fit the slide if it's too large
\sbox\pandoc@box{#1}%
\ifdim\wd\pandoc@box>\linewidth
\makebox[\linewidth][c]{\resizebox{\linewidth}{!}{\usebox\pandoc@box}}%
\else
\usebox\pandoc@box
\fi
}
\makeatother
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
@@ -12,7 +23,11 @@
\newcommand{\imagepath}{Images}
\definecolor{orange}{HTML}{f87a01}
\usetheme[german, color, coloraccent=orange]{awesome}
\usetheme[german, color, coloraccent=orange, notoc]{awesome}
\makeatletter
\newcommand{\nonumberson}{\awesome@nonumbersinframetitletrue}
\newcommand{\nonumbersoff}{\awesome@nonumbersinframetitlefalse}
\makeatother
% \usepackage{firamath-otf}
\usepackage{pgfplots}
@@ -57,21 +72,32 @@
\institute{Schulzentrum HTL HAK Ungargasse}
\uni{Schulzentrum HTL HAK Ungargasse}
\location{Wien}
\background{background.png}
\background{./Images/images/background/title-slide/background.png}
\logo{\includegraphics[width=3cm]{\imagepath/images/logos/logo.png}}
\date\today
\date{22. April 2026}
\AtBeginSection[]
{
\begingroup
\nonumberson
\begin{frame}[noframenumbering,plain]{Agenda}
\tableofcontents[currentsection, hideothersubsections]
\tableofcontents[currentsection]
\end{frame}
\endgroup
}
\begin{document}
\maketitle
\begingroup
\nonumberson
\begin{frame}[noframenumbering,plain]{Agenda}
\tableofcontents
\end{frame}
\endgroup
$body$
\end{document}

View File

@@ -2,7 +2,37 @@
## Rolle im Projekt
## Infrastruktur & CI/CD
::: columns
:::: column
Aufgabenbereiche:
- Infrastruktur & CI/CD
- Product Owner
- Kundenschnittstelle
- Softwareentwicklung:
- Event Registration
- Black Board
- Report System
- Mass Mailer
::::
:::: column
\begin{tikzpicture}
\clip (0,0) circle (3em);
\node at (0,0) {\includegraphics[width=6em]{./Images/images/konstantin/profile.jpg}};
\draw[accent, line width=3pt] (0,0) circle (3em);
\end{tikzpicture}
::::
:::
## Infrastruktur
::: columns
:::: column
Systemaufbau:
@@ -11,18 +41,47 @@ Systemaufbau:
- NginX
- Asp.Net Core
::::
:::: column
Entwicklungsumgebung:
- Gitea Server
- Wireguard
- Docker
- Transfer: GitHub
- Gitea Actions
::::
:::
## CI/CD
CI:
- Gitea Actions
- Debian Packages (.deb)
- Code-Reviewing:
- KI
- Git-Flow
## Softwarearchitektur
- Open-Closed Principle
- Strategy Pattern
- Dependency Injection
## Technischer Vergleich
Bisherige Erfahrungen:
- Go
- Typescript
- GRPC (interprozess Kommunikation)
Untersuchungsgebiete:
- Typisierung
- Konsistenz
@@ -39,3 +98,5 @@ right
::::
:::
## Fazit

View File

@@ -1,95 +1,65 @@
# Adam Gaiswinkler
## Individueller Teil: Adam Gaiswinkler
**Entwicklung von CMS-Modulen & Frontend-Design**
**CMSModul & Frontend**
---
## Ausgangslage & Motivation
- **Ausgangssituation**: Bedarf an einer modernen Plattform für den Absolventenverein der HTL Ungargasse.
- **Ausgangssituation**: Moderne FrontendPlattform für den Absolventenverein (responsive, neue Features).
- **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.
- TeamVerkleinerung (63) → mehr Verantwortung.
- Projektidentifikation & PraxisBlazor/ASP.NET.
- **Ziele**:
- OqtaneModule (Anmeldetool, HallofFame).
- Responsives 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)
- **TechStack**: Bootstrap+CustomCSS, QuestPDF, Gitea, VS2022wechsel zu VSCode (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.
- EigenNavigation (bootstrap Komponenten haben nicht gepasst ).
- Systemseiten per LINQ ausblenden.
- Responsive CSSMediaQueries + reines CSSBurgerMenu.
- ControlPanel & CookieConsent.
---
## 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
- **KartenGrid**: Responsive Übersicht, LiveSuche & Sortierung.
- **DetailSeite**: GlasmorphismusDesign.
- **Workflow**: RichTextEditor, BildUpload (max5MB), Status (Entwurf/Veröffentlicht) inkl. EigentümerCheck.
- **PDFExport**: QuestPDF.
- **Moderation**: Meldesystem über InterfacesPaket.
---
## 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.
## Umsetzung: Anmeldetool
- Klar getrennte Ja/NeinButtons.
- LiveStatusUpdates via Blazor.
- UIOverlay, mobilefreundlich.
---
## 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).
- **Plattformwechsel**: Windows → macOS JetBrainsRider.
- **HostingProbleme**: Node.js/HTMLÜbergangslösung 2025.
---
## 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.
- **Technisch**: Git, CSSFlexbox, Blazor.
- **Methodisch**: Aufgabenverteilung, regelmäßige Meetings.
- **Persönlich**: Eigeninitiative & Verantwortung.
---
## 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.
- Theme final, mobil, Hall of Fame & Anmeldetool funktionsfähig.
- **Erweiterungen**: TeilnehmerAuswertung, AnmeldeLimit, automatische EMailErinnerungen.

View File

@@ -40,7 +40,7 @@
- **Lösung**: Vollautomatisiertes Backup-Skript.
```mermaid
graph TD
graph LR
Start((Start: Cronjob 02:30)) --> Init[Initialisierung]
Init --> Vars[Konfiguration laden]
@@ -82,22 +82,20 @@ graph TD
- Abbau von Registrierungshürden.
- Keine sensiblen Passwörter im eigenen System.
![Ablauf der OAuth-Authentifizierung (Erstellt mit ChatGPT)](../Diplomarbeitsbuch/images/04-Florian/oauth-flow.png)
![Ablauf der OAuth-Authentifizierung](Images/oauth-flow-new.png)
---
## Der Premium-Bereich (1)
- **Zweck**: Motivation für aktives Mitglieder-Engagement.
**Zweck**: Motivation für aktives Mitglieder-Engagement.
**Ingenieur-Antrags-Workflow & Prüfung:**
![Formular zum Einreichen eines Ingenieur-Antrags](../Diplomarbeitsbuch/images/04-Florian/ingenieur-antrag-status.png)
![](../Diplomarbeitsbuch/images/04-Florian/ingenieur-antrag-status.png){width=20em}
**Bibliothek genehmigter Vorzeige-Anträge:**
![Ansicht der genehmigten Ingenieur-Anträge](../Diplomarbeitsbuch/images/04-Florian/ingenieur-antraege-liste.png)
![](../Diplomarbeitsbuch/images/04-Florian/ingenieur-antraege-liste.png){width=20em}
---
# Der Premium-Bereich (2)
## Der Premium-Bereich (2)
**Architektur des Premium-Bereich-Moduls:**
```mermaid
graph LR

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 985 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 KiB