<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Studium Archives - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/category/studium/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/category/studium/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Thu, 12 Mar 2026 12:50:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://mobile.fhstp.ac.at/wp-content/uploads/2025/03/icon-120x120.webp</url>
	<title>Studium Archives - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/category/studium/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Projekt WS25 &#124; MixMatch (Fortsetzung)</title>
		<link>https://mobile.fhstp.ac.at/allgemein/projekt-ws25-mixmatch-fortsetzung/</link>
		
		<dc:creator><![CDATA[Andreas Kaiser]]></dc:creator>
		<pubDate>Sun, 01 Mar 2026 23:41:03 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Native Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[mobile]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15368</guid>

					<description><![CDATA[<p>Um mein Projekt &#8220;MixMatch&#8221; näher in die Richtung production-ready Zustand zu bringen wurde das 3. Semester von mir genutzt, nahtlos an den zuvor vorhandenen Stand der Entwicklung anzuschließen.Im Semester habe ich mich im wesentlichen darauf fokussiert, Community Features, wie Sterne-Bewertungen und Kommentier- bzw. Antwortfunktion, in meine Nativescript-App zu integrieren und deutlich mehr Zeit in Bugfixing <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/projekt-ws25-mixmatch-fortsetzung/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/projekt-ws25-mixmatch-fortsetzung/">Projekt WS25 | MixMatch (Fortsetzung)</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Um mein Projekt &#8220;MixMatch&#8221; näher in die Richtung production-ready Zustand zu bringen wurde das 3. Semester von mir genutzt, nahtlos an den zuvor vorhandenen Stand der Entwicklung anzuschließen.<br>Im Semester habe ich mich im wesentlichen darauf fokussiert, Community Features, wie Sterne-Bewertungen und Kommentier- bzw. Antwortfunktion, in meine Nativescript-App zu integrieren und deutlich mehr Zeit in Bugfixing zu investieren. Nebenbei wurde stellenweise das Design weiter optimiert, sowie das Fehlerhandling überarbeitet. Zur Abrundung wurde im Projektabschnitt eine exportierbare Einkaufliste für Zutaten, die der/die User:in braucht, um die Rezepte nachzumachen, integriert.</p>



<h2 class="wp-block-heading"><strong>Neuerungen seit dem letzten Semester</strong></h2>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.34%">
<figure class="wp-block-image size-full is-resized"><img fetchpriority="high" decoding="async" width="1224" height="2570" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/03/Screenshot_20260301_232048.png" alt="" class="wp-image-15782" style="width:232px;height:auto" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/03/Screenshot_20260301_232048.png 1224w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/03/Screenshot_20260301_232048-732x1536.png 732w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/03/Screenshot_20260301_232048-975x2048.png 975w" sizes="(max-width: 1224px) 100vw, 1224px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1224" height="2570" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/03/Screenshot_20260302_003203.png" alt="" class="wp-image-15787" style="width:231px;height:auto" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/03/Screenshot_20260302_003203.png 1224w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/03/Screenshot_20260302_003203-732x1536.png 732w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/03/Screenshot_20260302_003203-975x2048.png 975w" sizes="(max-width: 1224px) 100vw, 1224px" /></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure class="wp-block-image size-full is-resized"><img decoding="async" width="1224" height="2570" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/03/Screenshot_20260301_232236.png" alt="" class="wp-image-15784" style="width:234px;height:auto" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/03/Screenshot_20260301_232236.png 1224w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/03/Screenshot_20260301_232236-732x1536.png 732w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/03/Screenshot_20260301_232236-975x2048.png 975w" sizes="(max-width: 1224px) 100vw, 1224px" /></figure>
</div>
</div>



<ul class="wp-block-list">
<li><strong>Filteroptionen in der Rezeptliste</strong></li>
</ul>



<p>Der größte strukturelle Umbau fand in der Rezeptliste statt. Bisher wurden die Rezepte einfach als rohe Liste angezeigt, ohne Möglichkeit zur Filterung. Jetzt gibt es eine eigene Suchleiste mit Autocomplete-Vorschlägen der gefilterten Drinks, eine alphabetische Sortierung mit Drink-Nummer pro Karte, sowie einen Toggle-Filter für Signature Drinks.</p>



<ul class="wp-block-list">
<li><strong>Kommentar-Sektion bei den Recipes</strong></li>
</ul>



<p>Das Herzstück des Projektes war die Erweiterung, dass jedes Rezept nun eine vollwertige Community-Section hat. User:innen können Kommentare mit Sternebewertung hinterlassen, auf Kommentare anderer antworten und eigene Kommentare wieder löschen. Die Bewertungen fließen in eine Durchschnittsbewertung ein, die prominent im Header der Rezeptkarte angezeigt wird. Die gesamte Kommunikation läuft in Echtzeit über WebSockets.</p>



<ul class="wp-block-list">
<li><strong>Benötigte Zutaten einer Einkaufsliste hinzufügen</strong></li>
</ul>



<p>Bisher wurden alle nicht angegebenen Zutaten bei der Hauptsuche automatisch gesammelt und global in meinem Code zwischengespeichert. Das wurde grundlegend über ein Einkaufslisten-Feature überarbeitet: Pro Rezept kann der/die Nutzer:in nun selbst entscheiden, ob er/sie die fehlenden Zutaten zur Einkaufsliste hinzufügen möchte. Fehlende Zutaten werden in der Zutatenliste farblich in Orange hervorgehoben. Ein einzelner Button pro Rezept überträgt dann gezielt nur die fehlenden Zutaten in die Einkaufsliste. Die Einkaufsliste selbst unterstützt den Export als PDF über den nativen Android PrintManager sowie im CSV-Format.<br><br>Neben diesen Änderungen konnten viele Bugs behoben werden. Speziell einige Bugs, die die Funktionalität rund um die Erstellung von &#8220;Signature Drinks&#8221; (anlegen/löschen) als auch den Umgang mit gekennzeichneten Favoriten-Rezepten, eingeschränkt haben, existieren nicht mehr.</p>



<h2 class="wp-block-heading"><strong>Technischer Part</strong></h2>



<p>Der Großteil an Technologien ist gleich geblieben. Im Frontend setze ich weiterhin auf NativeScript Angular bzw. Tailwind für das Design und im Backend SpringBoot. Das Backend habe ich dieses Semester erstmalig über den Online-Service Railway gehostet. Dazugekommen sind vor allem die WebSocket-Bibliothek <code>@stomp/stompjs</code> im Frontend sowie die entsprechende Spring WebSocket-Abhängigkeit im Backend.</p>



<p>Für die Kommentar-Funktion war von Anfang an klar, dass klassische HTTP-Requests nicht ausreichen , sonst wäre ein ständiges manuelles Aktualisieren notwendig gewesen, um neue Kommentare zu sehen. Die Wahl fiel auf WebSockets mit STOMP, einem einfachen Messaging-Protokoll das auf WebSocket aufsetzt und ein Publish-Subscribe-Modell ermöglicht. Im Spring Boot Backend wird dabei ein Message-Broker konfiguriert der eingehende Nachrichten an alle Subscriber des jeweiligen Rezept-Topics weiterleitet. Jedes Rezept hat seinen eigenen Kanal, zum Beispiel <code>/topic/recipe/42/comments</code>. Nur Nutzer:innen die gerade dieses Rezept offen haben, empfangen die Kommentar, die zu diesem Rezept abgegeben wurden. Der Controller nimmt neue Kommentare entgegen, speichert sie und schickt sie sofort an alle aktiven Subscriber:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: java; title: ; notranslate">
@MessageMapping(&quot;/comments/create&quot;)
public void createComment(CreateCommentRequestDto request, Principal principal) {
    User author = userRepository.findByUsername(principal.getName())...;
    CommentResponseDto saved = commentService.createComment(request, author);
    messagingTemplate.convertAndSend(
        &quot;/topic/recipe/&quot; + request.getRecipeId() + &quot;/comments&quot;, 
        saved
    );
}
</pre></div>


<p>Im Frontend übernimmt ein dedizierter <code>CommentWebSocketService</code> die gesamte Verbindungslogik. Er verwendet die <code>@stomp/stompjs</code> Bibliothek, schickt den JWT-Token beim Verbindungsaufbau mit und subscribt auf den zum Rezept passenden Topic-Kanal:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
this.stompClient = new Client({
    webSocketFactory: () =&gt; new WebSocket(`wss://...railway.app/ws`),
    connectHeaders: { Authorization: `Bearer ${this.authToken}` },
    reconnectDelay: 5000,
});

this.stompClient.onConnect = () =&gt; {
    this.stompClient.subscribe(
        `/topic/recipe/${this.recipeId}/comments`,
        (message) =&gt; {
            const comment = JSON.parse(message.body);
            onCommentReceived(comment);
        }
    );
};
</pre></div>


<h2 class="wp-block-heading"><strong>Herausforderungen &amp; Learning(s) daraus</strong></h2>



<p>Die größte Herausforderung des Semesters waren eindeutig die WebSockets. Theoretisch klingt es simpel (Verbindung öffnen und Nachrichten empfangen), jedoch in der Praxis gab es einige Hürden. Zuerst die Authentifizierung: anders als bei normalen HTTP-Requests musste der JWT-Token über die STOMP <code>connectHeaders</code> mitgeschickt und im Backend extra validiert werden. Dann das Problem mit inaktiven Verbindungen, denn ohne der sogenannten &#8220;Heartbeat-Konfiguration&#8221; auf beiden Seiten kamen Nachrichten irgendwann einfach nicht mehr an (Fehlermeldungen wurden nicht geworfen). Zu guter Letzt das Aufräumen der Verbindungen, denn ohne explizites <code>disconnect()</code> blieben im Hintergrund immer mehr aktive Verbindungen offen.</p>



<p>Was das Aufräumen so schwierig gemacht hat, war der Pager, mit dem man zwischen den Rezepten swipen kann. NativeScript&#8217;s Pager-Komponente erstellt alle Rezept-Items gleichzeitig beim Laden, bei 14 Rezepten also sofort 14 WebSocket-Verbindungen und 14 HTTP-Requests, obwohl der/die Nutzer:in nur ein einziges Rezept sieht. Noch dazu wird <code>ngOnDestroy</code> beim Wischen zwischen den Items nicht zuverlässig aufgerufen, weil der Pager seine Views intern recycelt statt sie wirklich zu zerstören. Dadurch hat die Cleanup-Logik nie gefeuert.</p>



<p>Die Lösung war letztlich ein Umdenken: statt auf <code>ngOnDestroy</code> zu vertrauen, steuert jetzt ein Flag, ob die Kommentar-Sektion überhaupt gerendert wird. Sobald der Nutzer wegwischt, verschwindet die Komponente via <code>*ngIf</code> aus dem DOM, damit das Cleanup zuverlässig durchläuft. Das wesentliche Learning dabei, war ein gut ausgebautes Debugging zu haben.</p>



<h2 class="wp-block-heading"><strong>Fazit und zukünftige TODOs</strong></h2>



<p>In diesem Projektabschnitt konnte ich mich erstmalig herausfordernd damit befassen, wie WebSockets technisch umgesetzt werden. Das war gleichzeitig eines der interessantesten und aufwändigsten Themen des Semesters. Die vielen Debugging-Sessions haben mich aber auch am meisten weitergebracht. Rückblickend bin ich sehr zufrieden damit, was ich mir vorgenommen hatte auch tatsächlich vollständig umgesetzt zu haben. Gerade das Bugfixing war diesmal besonders aufwändig, hat aber mit großem Erfolg geendet und manche Features meiner App brauchbarer gemacht.</p>



<p>An diesen Dingen sollte nun weitergearbeitet werden: Performance-seitig gibt es noch Luft nach oben, sowohl beim initialen Laden als auch bei den Screen-Wechseln merkt man stellenweise noch Verzögerungen die es zu optimieren gilt. Auch das Design ist noch nicht wirklich durchgängig einheitlich, was ich in einem nächsten Schritt konsequenter angehen möchte. Dazu kommt, dass ich bisher kaum echtes User-Feedback eingeholt habe, das soll sich ändern. Auf technischer Seite fehlen noch automatisierte Tests, die zur noch besseren Stabilität der App beitragen sollen. Schlussendlich wäre das große Ziel die App veröffentlichen zu können.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><strong>Beitragsbild</strong>: dieses wurde mittels Einsatz von KI erzeugt</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/projekt-ws25-mixmatch-fortsetzung/">Projekt WS25 | MixMatch (Fortsetzung)</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Projekt &#124; VS Code Extension</title>
		<link>https://mobile.fhstp.ac.at/studium/studium-projekte/projekt-vs-code-extension/</link>
		
		<dc:creator><![CDATA[Katharina Wurm]]></dc:creator>
		<pubDate>Thu, 26 Feb 2026 11:32:36 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[extension]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Typescript]]></category>
		<category><![CDATA[Visual Studio Code]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15534</guid>

					<description><![CDATA[<p>IDEs wie Visual Studio Code gehören zum Alltag jeder Softwareentwicklerin und jedes Softwareentwicklers – egal ob im Mobile-, Web- oder Backend-Bereich. Was VS Code besonders spannend macht, ist, dass es sich erweitern lässt. Sogenannte &#8220;Extensions&#8221; ermöglichen es, die Arbeitsumgebung individuell zu gestalten, Prozesse zu automatisieren und neue Funktionen direkt in den Editor zu integrieren. Obwohl <a class="read-more" href="https://mobile.fhstp.ac.at/studium/studium-projekte/projekt-vs-code-extension/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/studium-projekte/projekt-vs-code-extension/">Projekt | VS Code Extension</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><span style="font-size: revert; white-space: normal;">IDEs wie Visual Studio Code gehören zum Alltag jeder Softwareentwicklerin und jedes Softwareentwicklers – egal ob im Mobile-, Web- oder Backend-Bereich. </span>Was VS Code besonders spannend macht, ist, dass es sich erweitern lässt. Sogenannte &#8220;Extensions&#8221; ermöglichen es, die Arbeitsumgebung individuell zu gestalten, Prozesse zu automatisieren und neue Funktionen direkt in den Editor zu integrieren.</p>



<p>Obwohl ich bereits unzählige Stunden in IDEs wie VS Code verbracht habe, um Apps und mehr zu entwickeln, hatte ich mich bisher nie damit beschäftigt, wie sich die Entwicklungsumgebung selbst erweitern lässt.</p>



<p>Da ich die Idee hatte, in meiner Masterarbeit eine VS Code Extension zu entwickeln, wollte ich das Einzelprojekt im 3. Semester der Masterklasse Mobile nutzen, um erste praktische Erfahrungen mit der Entwicklung von VS Code Extensions zu sammeln, bevor ich mich an die separate Entwicklung des Masterarbeitsprojekts mache.</p>



<p>Das Ergebnis dieses explorativen Projekts ist &#8220;Cute Cat&#8221;: eine süße VS Code Extension, die unterschiedliche Möglichkeiten von VS Code Extensions kombiniert.</p>



<h2 class="wp-block-heading">Features</h2>



<h3 class="wp-block-heading">Commands</h3>



<p>Die Extension stellt mehrere Commands zur Verfügung, die direkt über die Command Palette in VS Code aufgerufen werden können:</p>



<ul class="wp-block-list">
<li><strong>&#8220;Meow!&#8221;</strong> zeigt eine kurze Informationsnachricht.</li>



<li>&#8220;<strong>Show me the cat“</strong>&nbsp;öffnet ein Informations-Popup, in welchem auch mehrzeiliger Text verwendet werden kann.</li>



<li>&#8220;<strong>Wake up cat“</strong>&nbsp;aktiviert die WebView im Side Panel (falls sie nicht schon angezeigt wird) und zeigt eine überraschte Katze für ein paar Sekunden. Die WebView wird weiter unten im Detail beschrieben.</li>



<li>&#8220;<strong>Wrap selection in try catch block“</strong>&nbsp;erweitert den ausgewählten Code automatisch um einen&nbsp;try-catch-Block oder gibt eine Warnung aus, falls keine Auswahl getroffen wurde.</li>
</ul>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="1255" height="652" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/commands.png" alt="" class="wp-image-15614" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/commands.png 1255w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/commands-770x400.png 770w" sizes="auto, (max-width: 1255px) 100vw, 1255px" /></figure></div>


<h3 class="wp-block-heading">Themes</h3>



<p>Neben funktionalen Features wurden auch eigene Designkomponenten umgesetzt:</p>



<ul class="wp-block-list">
<li><strong>&#8220;Cute Cat Pastel Dark&#8221;</strong> Colour Theme</li>



<li><strong>&#8220;Cute Cat Pastel Icons&#8221;</strong> Icon Theme</li>
</ul>



<p>Dabei lag der Fokus auf einer konsistenten visuellen Identität. Die Kombination aus sanften Pastelltönen und angepassten Icons verleiht der Extension einen klaren Wiedererkennungswert.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1255" height="652" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/theme-demo-2.jpg" alt="" class="wp-image-15612" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/theme-demo-2.jpg 1255w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/theme-demo-2-770x400.jpg 770w" sizes="auto, (max-width: 1255px) 100vw, 1255px" /></figure>



<h3 class="wp-block-heading"><strong>WebView Side Panel</strong></h3>



<p>Ein zentrales Element der Extension ist die WebView im Side Panel. Dort wird ein animiertes Katzen-GIF angezeigt, das dynamisch auf Kontextinformationen reagiert:</p>



<ul class="wp-block-list">
<li>Anpassung an die Tageszeit (z. B. „Good Morning“)</li>



<li>Reaktion auf lange Coding-Sessions (z. B. schlägt die Katze dem*der User*in nach 4 Stunden vor, eine Kaffeepause einzulegen)</li>



<li>Anzeige der aktuellen Session-Dauer</li>



<li>Anzeige, wie lange die Extension insgesamt schon aktiv ist (&#8220;<em>Did you know we have been friends for 19h 58min?</em>&#8220;)</li>
</ul>



<p>Zusätzlich kann innerhalb der WebView über ein Settings-Icon ein Modal geöffnet werden, in dem User*innen mit einem Klick die bereitgestellte Colour bzw. Icon Theme (de)aktivieren können.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1255" height="652" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/webview.png" alt="" class="wp-image-15616" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/webview.png 1255w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/webview-770x400.png 770w" sizes="auto, (max-width: 1255px) 100vw, 1255px" /></figure>



<h3 class="wp-block-heading">Text Decorations</h3>



<p>Ein weiteres Feature der Extension sind dynamische Text Decorations. In den geöffneten Texteditoren werden Schlüsselwörter wie &#8220;cat&#8221; und &#8220;cute&#8221; mit kleinen dekorativen Elementen versehen.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1255" height="652" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/decorations.png" alt="" class="wp-image-15618" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/decorations.png 1255w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/decorations-770x400.png 770w" sizes="auto, (max-width: 1255px) 100vw, 1255px" /></figure>



<details class="wp-block-details is-layout-flow wp-block-details-is-layout-flow"><summary><em>Attribution</em></summary>
<ul class="wp-block-list">
<li><em>Cat&nbsp;SVG Vector (mit geänderter Farbe): bereitgestellt auf <a href="https://www.svgrepo.com/svg/522779/cat">https://www.svgrepo.com/svg/522779/cat</a> von <a href="https://www.svgrepo.com/author/Solar%20Icons/">Solar Icons</a> unter der <a href="https://www.svgrepo.com/page/licensing/#CC%20Attribution">CC Attribution Lizenz</a></em></li>



<li><em>Bow Tie Ribbon&nbsp;SVG Vector (mit geänderter Farbe): bereitgestellt auf <a href="https://www.svgrepo.com/svg/321894/bow-tie-ribbon">https://www.svgrepo.com/svg/321894/bow-tie-ribbon</a> von <a href="https://www.svgrepo.com/collection/game-interface-icons/">Game Interface Icons</a> unter der <a href="https://www.svgrepo.com/page/licensing/#CC%20Attribution">CC Attribution Lizenz</a></em></li>
</ul>
</details>



<h2 class="wp-block-heading">Projektaufbau</h2>



<p>Vereinfacht dargestellt ist das Projekt wie folgt aufgebaut:</p>



<pre class="wp-block-code"><code>- media/
  - webViewScript.js
  - webViewStyles.css
  - &#91;...Bilder]
- src/
  - extension.ts (Einstiegspunkt)
  - &#91;...]
- themes/
  - color-theme.json
  - icon-theme.json
- &#91;...]
- package.json (Manifest)</code></pre>



<p>Wichtig sind hierbei die <code>package.json</code> Datei, in welcher die Commands, WebView und Themes deklariert werden, und die <code>src/extension.ts</code> Datei, welche den Einstiegspunkt der Extension darstellt:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
import * as vscode from &#039;vscode&#039;;

export function activate(context: vscode.ExtensionContext) {
    // ...
}

export function deactivate() {}
</pre></div>


<h2 class="wp-block-heading">Challenges und Learnings</h2>



<h3 class="wp-block-heading">API-Dokumentation</h3>



<p>VS Code bietet einen <a href="https://code.visualstudio.com/api/get-started/your-first-extension">&#8220;Your First Extension&#8221; Guide</a> und stellt viele Beispielprojekte zu unterschiedlichen Extension-Funktionalitäten für Entwickler*innen zur Verfügung. Trotzdem ist es manchmal nicht so leicht, das genaue Beispielprojekt, welches man sucht, zu finden. Ich würde zukünftigen Extension-Developer*innen empfehlen, direkt auf GitHub zu schauen (<a href="https://github.com/microsoft/vscode-extension-samples">https://github.com/microsoft/vscode-extension-samples</a>), anstatt nur in der <a href="https://code.visualstudio.com/api">VS Code Extension API</a> zu suchen.</p>



<p>Falls man etwas Bestimmtes zur <a href="https://code.visualstudio.com/api/references/vscode-api">VS Code API</a> nachschauen will, ist diese recht gut dokumentiert. Leider funktionieren einige Links auf der Website allerdings nicht, weshalb ich mich hauptsächlich mit der Suchfunktion (STRG+F) durch die API-Dokumentation arbeiten musste.</p>



<p>Von der Community gibt es eher weniger Tutorials und Online-Beiträge. Um die VS Code Extension zu entwickeln, kombinierte ich daher Informationen aus der API-Dokumentation, aus Beispielprojekten und Tutorials und erarbeitete mir die fehlenden Details eigenständig durch &#8220;Learning by Doing&#8221;.</p>



<h3 class="wp-block-heading">Text Decoration Icons</h3>



<p>Man würde denken, ein Bild als Text Decoration zu setzen, wäre trivial. Doch hat es mich einige Zeit gekostet, bis ich Folgendes realisiert habe: Wenn man ein SVG Icon verwenden will, darf dieses nicht selbst &#8220;width&#8221; und &#8220;height&#8221; angeben. Obwohl man der Text Decoration sowohl width, als auch height, mitgeben kann, werden diese Angaben ignoriert, wenn das SVG seine eigene Größe vorgibt. </p>



<p>Weiters werden die Icons nicht mitting in der Zeile positioniert (siehe das Bild der Text Decorations: die Icons sind etwas weiter oben positioniert als der Text). Man kann der Decoration zwar auch einen Margin mitgeben, allerdings würde z. B. ein Top-Margin (um den extra Platz unterhalb des Icons auszugleichen) nicht nur das Icon, sondern die ganze Zeile nach unten schieben.</p>



<h3 class="wp-block-heading">Kommunikation zwischen Extension und WebView</h3>



<p>Eine weitere Challenge war die Kommunikation zwischen der Extension und der WebView, um insbesondere bei den &#8220;Theme Toggles&#8221; beide Seiten am gleichen Stand zu halten (wenn das Theme (extern) aktiviert wurde, sollte auch der Toggle in der WebView automatisch aktiviert werden). Dank der VS Code API können aber Nachrichten recht einfach zwischen der Extension und der WebView ausgetauscht werden.</p>



<h3 class="wp-block-heading">Debugging</h3>



<p>Ich fand es sehr spannend, insbesondere die WebView zu debuggen. Über die Command Palette in VS Code lässt sich der Web Inspector öffnen (&#8220;Toggle Developer Tools&#8221;), mit welcher sowohl der Console-Output, als auch die HTML-Elemente der ganzen IDE inspiziert werden können. Innerhalb von den Sourcefiles (abgesehen von <code>webViewScript.js</code>) lassen sich allerdings auch Breakpoints setzen.</p>



<p>Obwohl der sogenannte &#8220;Extension Development Host&#8221; (das separate VS Code Fenster, in welchem die Extension während der Entwicklung läuft) viel zu bieten hat, konnte ich nicht die komplette Funktionalität meiner Extension darin testen. Das Icon Theme lässt sich innerhalb des Extension Hosts zum Beispiel nicht programmatisch für den Workspace setzen (innerhalb von <code>.vscode/settings.json</code>), weshalb ich die Extension mit dem &#8220;<code>vsce package</code>&#8221; Command zuerst builden und installieren musste, um den &#8220;Icon Theme Toggle&#8221; innerhalb der WebView zu testen.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Mit dem Projekt &#8220;Cute Cat&#8221; konnte ich einen intensiven Einblick in die Möglichkeiten und Herausforderungen von VS Code Extensions gewinnen. Besonders wertvoll war für mich dabei der explorative Charakter des Projekts: Ich konnte vieles ausprobieren und dadurch ein tiefes Verständnis für die Entwicklung von VS Code Extensions aufbauen.</p>



<p>Ich bin stolz auf das, was ich erreicht habe, und fühle mich nun bestens vorbereitet, das nächste Projekt anzugehen: die Entwicklung meiner eigenen VS Code Extension im Rahmen der Masterarbeit.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/studium-projekte/projekt-vs-code-extension/">Projekt | VS Code Extension</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Projekt &#124; Timelapse Android App</title>
		<link>https://mobile.fhstp.ac.at/studium/studium-projekte/projekt-timelapse-android-app/</link>
		
		<dc:creator><![CDATA[David Grünberger]]></dc:creator>
		<pubDate>Thu, 26 Feb 2026 10:19:46 +0000</pubDate>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Dokumentation]]></category>
		<category><![CDATA[Native Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Trends]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[design systems]]></category>
		<category><![CDATA[Jetpack Compose]]></category>
		<category><![CDATA[Material Design]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Semesterprojekt]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15691</guid>

					<description><![CDATA[<p>Im Rahmen des Semesterprojekts im 3. Semester der Masterklasse Mobile habe ich die Android-App &#8220;Timelapse&#8221; entwickelt. Die Idee dahinter: Aus vielen einzelnen Momentaufnahmen wird automatisch ein visueller Zeitstrahl – als Video, das langfristige Veränderungen sichtbar macht. Egal ob Bartwachstum, Fitness-Progress oder das Wachstum einer Zimmerpflanze: Timelapse hilft dabei, diese Reise festzuhalten. Ziel des Projekts war ein alltagstauglicher MVP, der den kompletten Ablauf abdeckt: vom Erstellen <a class="read-more" href="https://mobile.fhstp.ac.at/studium/studium-projekte/projekt-timelapse-android-app/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/studium-projekte/projekt-timelapse-android-app/">Projekt | Timelapse Android App</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Im Rahmen des Semesterprojekts im 3. Semester der Masterklasse Mobile habe ich die Android-App &#8220;Timelapse&#8221; entwickelt. Die Idee dahinter: Aus vielen einzelnen Momentaufnahmen wird automatisch ein visueller Zeitstrahl – als Video, das langfristige Veränderungen sichtbar macht. Egal ob Bartwachstum, Fitness-Progress oder das Wachstum einer Zimmerpflanze: Timelapse hilft dabei, diese Reise festzuhalten. Ziel des Projekts war ein alltagstauglicher MVP, der den kompletten Ablauf abdeckt: vom Erstellen eines Projekts über tägliche Erinnerungen und eine übersichtliche Tage-Ansicht bis hin zur fertigen Video-Montage, die sich teilen oder archivieren lässt.</p>



<h2 class="wp-block-heading">Worum es in der&nbsp;App geht</h2>



<p>Im Kern funktioniert Timelapse wie ein&nbsp;visuelles&nbsp;Tagebuch:</p>



<ul class="wp-block-list">
<li>Nutzer:innen legen Projekte an (z. B. „Daily Selfie“ oder „Zimmerpflanze“).</li>



<li>Die App erinnert regelmäßig daran, neue Fotos aufzunehmen.</li>



<li>Alle Bilder werden zeitlich geordnet, mit Datum und optionalen Kommentaren gespeichert.</li>



<li>Auf einer kompakten Übersicht sieht man, wann man etwas aufgenommen hat, welche Tage besonders wichtig waren und wie sich das Projekt über Wochen und Monate entwickelt.</li>



<li>Aus dieser Sammlung erzeugt Timelapse auf Knopfdruck ein Zeitraffervideo, das die Geschichte des Projekts in wenigen Sekunden erzählt.</li>
</ul>



<h2 class="wp-block-heading">Zentrale&nbsp;Funktionen&nbsp;in&nbsp;Kürze</h2>



<ul class="wp-block-list">
<li><strong>Projektorganisation:</strong> Mehrere parallele Timelapse-Projekte mit Titel, Beschreibung und individuellen Einstellungen.</li>



<li><strong>Visuelle Timeline:</strong> Eine kombinierte Wochen- und Listenansicht zeigt, welche Tage schon dokumentiert sind und welche Lücken es noch gibt.</li>



<li><strong>Erinnerungen:</strong> Konfigurierbare Benachrichtigungen, damit die tägliche Aufnahme zur Routine wird und die Timeline nicht abreißt.</li>



<li>F<strong>avoriten &amp; Notizen:</strong> Einzelne Tage können hervorgehoben und mit kurzen Kommentaren versehen werden – etwa um Meilensteine oder besondere Momente zu markieren.</li>



<li><strong>Automatische Video-Montage:</strong> Die App erstellt aus den Bildern ein Video, berücksichtigt Ausrichtung, Datum, optionales Wasserzeichen und Kommentare und bietet Konfigurationsmöglichkeiten für Qualität oder Textstil.</li>
</ul>



<figure class="wp-block-gallery has-nested-images columns-4 wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1080" height="2400" data-id="15763" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122653_Timelapse.jpg" alt="" class="wp-image-15763" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122653_Timelapse.jpg 1080w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122653_Timelapse-691x1536.jpg 691w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122653_Timelapse-922x2048.jpg 922w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1080" height="2400" data-id="15765" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122559_Timelapse.jpg" alt="" class="wp-image-15765" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122559_Timelapse.jpg 1080w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122559_Timelapse-691x1536.jpg 691w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122559_Timelapse-922x2048.jpg 922w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1080" height="2400" data-id="15764" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122619_Timelapse.jpg" alt="" class="wp-image-15764" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122619_Timelapse.jpg 1080w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122619_Timelapse-691x1536.jpg 691w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122619_Timelapse-922x2048.jpg 922w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1080" height="2400" data-id="15766" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122700_Timelapse.jpg" alt="" class="wp-image-15766" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122700_Timelapse.jpg 1080w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122700_Timelapse-691x1536.jpg 691w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot_20260226_122700_Timelapse-922x2048.jpg 922w" sizes="auto, (max-width: 1080px) 100vw, 1080px" /></figure>
<figcaption class="blocks-gallery-caption wp-element-caption"><strong>Abb. 1: App Screenshots</strong></figcaption></figure>



<h2 class="wp-block-heading">Technologie-Stack</h2>



<p>Die&nbsp;App ist&nbsp;als&nbsp;native&nbsp;Android-Anwendung mit Jetpack Compose&nbsp;umgesetzt und&nbsp;nutzt&nbsp;moderne&nbsp;Android-APIs sowie eine&nbsp;klare&nbsp;Schichtung&nbsp;zwischen&nbsp;UI, Logik&nbsp;und Medienverarbeitung.</p>



<ul class="wp-block-list">
<li><strong>UI: Jetpack Compose + Material 3</strong>
<ul class="wp-block-list">
<li>Alle Screens (Projektliste, Details, Dialoge, Konfiguration) sind vollständig in Compose realisiert.</li>



<li>Material-3-Komponenten wie LargeFlexibleTopAppBar, Listen, Cards und Dialoge sorgen für ein konsistentes Look &amp; Feel.</li>



<li>Ein zentrales TimelapseTheme verwaltet App-Theme (Light/Dark), Seed-Farbe und den Palette-Stil.</li>
</ul>
</li>



<li><strong>Material 3 Expressive &amp; Material You</strong>
<ul class="wp-block-list">
<li>Die App nutzt Material 3 Expressive, um eine lebendige, charakterstarke Farb- und Typografie-Sprache umzusetzen – passend zu einer App, die persönliche Veränderungen dokumentiert.</li>



<li>Über einen integrierten Color Picker wählen Nutzer:innen eine eigene Akzentfarbe.</li>



<li>Aus dieser Seed-Farbe wird mit Material You ein komplettes Farbschema generiert, das sich konsistent über die gesamte App zieht.</li>



<li>Dadurch wirkt Timelapse auf jedem Gerät persönlich, bleibt aber immer klar strukturiert und gut lesbar – unabhängig davon, ob Light- oder Dark-Mode aktiv ist.</li>
</ul>
</li>



<li><strong>Video-Montage &amp; Bildverarbeitung</strong>
<ul class="wp-block-list">
<li>Die Montage-Logik läuft in einem eigenen Modul:</li>



<li>Bilder werden anhand ihrer EXIF-Daten korrekt ausgerichtet.</li>



<li>Ein Canvas setzt die Frames zusammen, ergänzt Texte (Datum, Kommentare, Wasserzeichen) und kümmert sich um Hintergrundfarbe und Zensurflächen.</li>



<li>Ein Muxer erzeugt daraus ein MP4-Video, gesteuert über Kotlin Flows, die den Fortschritt an die UI melden.</li>



<li>So entsteht aus einer losen Sammlung von Bildern ein stimmiges Timelapse-Video, ohne dass externe Tools nötig sind.</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Material&nbsp;3 Expressive&nbsp;&amp; Material You im&nbsp;Einsatz</h2>



<p>Ein großer&nbsp;Fokus&nbsp;des&nbsp;Projekts lag&nbsp;auf einer&nbsp;modernen, adaptiven&nbsp;UI, die sich&nbsp;nach&nbsp;den&nbsp;Nutzer:innen richtet:</p>



<ul class="wp-block-list">
<li><strong>Dynamische Farbwelten</strong>
<ul class="wp-block-list">
<li>Durch den Seed-Color-Ansatz wirkt die App nicht wie ein statisch durchgestyltes Produkt, sondern wie ein Rahmen, der sich der jeweiligen Geschichte anpasst.</li>



<li>Projekte mit emotionalem Kontext (z. B. Schwangerschaft, Beziehungen, erste Wohnung) profitieren von den kräftigen, expressiven Paletten, die Material 3 bereitstellt.</li>
</ul>
</li>



<li><strong>Einheitliche, weiche Formsprache</strong>
<ul class="wp-block-list">
<li>Großzügige Rundungen (z. B. extra große Card-Shapes in Dialogen), expressive Typografie und bewusst eingesetzte Icons unterstützen den Tagebuch-Charakter der App.</li>



<li>Die App verzichtet auf überladene UI-Elemente und setzt auf Ruhe, Klarheit und Fokus – wichtig, wenn man sich über Monate immer wieder mit derselben Oberfläche beschäftigt.</li>
</ul>
</li>



<li><strong>Konsistentes Theming</strong>
<ul class="wp-block-list">
<li>Alle Bausteine – von Erfassungsdialogs über Erinnerungs-Settings bis hin zu Fortschrittsanzeigen bei Scans und Montage – hängen am gleichen Theme.</li>



<li>Änderungen an Theme, Palette oder Seed-Farbe greifen sofort durch, ohne dass einzelne Screens speziell angepasst werden müssen.</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Herausforderungen&nbsp;&amp; Learnings</h2>



<ul class="wp-block-list">
<li><strong>Balance zwischen Einfachheit und Kontrolle</strong>
<ul class="wp-block-list">
<li>Nutzer:innen sollen einerseits „einfach nur“ ein Timelapse-Video erstellen können, andererseits genug Einstellmöglichkeiten für Qualität, Text, Stabilisierung und Privatsphäre haben.</li>



<li>Ein wichtiger Lernpunkt war, die Komplexität hinter klaren Dialogen und wenigen, gut erklärten Optionen zu verstecken.</li>
</ul>
</li>



<li><strong>Stabile, angenehme Timelapse-Videos</strong>
<ul class="wp-block-list">
<li>Kleine Fehler bei Skalierung oder Matrix-Transformation führen schnell zu Sprüngen oder abgeschnittenen Bereichen – hier war viel Feintuning nötig.</li>
</ul>
</li>



<li><strong>Durchgängiges Theming mit Material 3 / Material You</strong>
<ul class="wp-block-list">
<li>Seed-Farben, dynamische Paletten und unterschiedliche Palettenstile (z. B. Expressive) lassen sich mächtig kombinieren – aber nur, wenn das Theming-Konzept von Anfang an klar definiert ist.</li>



<li>Die wichtigste Erkenntnis: Ein zentrales Theme-Objekt vereinfacht langfristig alle Entscheidungen rund um Farben, Typografie und Component-Styling.</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Fazit</h2>



<p>Timelapse war für mich ein Projekt, in dem sich User Experience, modernes Android-Design und Medienverarbeitung sehr gut ergänzt haben. Die App zeigt, wie sich mit Jetpack Compose, Material 3 Expressive und Material You eine Oberfläche bauen lässt, die technisch anspruchsvolle Abläufe (zB. Videomontage) hinter einem einfachen, persönlichen Nutzungserlebnis versteckt. Besonders spannend war zu sehen, wie stark sich die Wahrnehmung der App ändert, wenn man eine eigene Farbwelt definieren kann und diese sich konsequent durch alle Screens zieht. In zukünftigen Schritten möchte ich die App um Themen wie Musik, Export-Presets und umfangreichere Sharing-Optionen erweitern – immer mit dem Ziel, den Kern beizubehalten: Veränderung sichtbar machen, ohne dass sich der Aufwand danach anfühlt.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/studium-projekte/projekt-timelapse-android-app/">Projekt | Timelapse Android App</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Projekt &#124; TripSync &#8211; geteilte Notizen</title>
		<link>https://mobile.fhstp.ac.at/allgemein/projekt-tripsync-geteilte-notizen/</link>
		
		<dc:creator><![CDATA[Caroline Labres]]></dc:creator>
		<pubDate>Wed, 25 Feb 2026 14:30:01 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Cross Plattform]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Semesterprojekt]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15372</guid>

					<description><![CDATA[<p>Im 3. Semester der Masterklasse Mobile habe ich mein Semesterprojekt TripSync vom vorhergien Semester erweitert. Dabei fokussierte ich mich auf die Funktionalität, gemeinsam Notizen schreiben zu können. Im Zuge dessen ist auch ein kleines Nebenprojekt mit Zusatzfeatures entstanden, das unabhängig von der App erlaubt, mit anderen Notizen zu schreiben. Kurzer Rückblick TripSync ist eine React <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/projekt-tripsync-geteilte-notizen/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/projekt-tripsync-geteilte-notizen/">Projekt | TripSync &#8211; geteilte Notizen</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Im 3. Semester der Masterklasse Mobile habe ich mein Semesterprojekt TripSync vom vorhergien Semester erweitert. Dabei fokussierte ich mich auf die Funktionalität, gemeinsam Notizen schreiben zu können. Im Zuge dessen ist auch ein kleines Nebenprojekt mit Zusatzfeatures entstanden, das unabhängig von der App erlaubt, mit anderen Notizen zu schreiben.</p>



<h2 class="wp-block-heading">Kurzer Rückblick</h2>



<p>TripSync ist eine React Native App, die die Urlaubsplanung in Gruppen vereinfacht. Man kann bereits generelle Reiseinformationen festhalten und eine gemeinsame Packliste führen. Siehe dazu auch meinen vorherigen Blogeintrag: <a href="https://mobile.fhstp.ac.at/allgemein/projekt-tripsync/">https://mobile.fhstp.ac.at/allgemein/projekt-tripsync/</a>. Nun hat unter anderem noch der Screen mit den geteilten Notizen gefehlt, weshalb ich mich darauf fokussierte.</p>



<h2 class="wp-block-heading">Vorgehensweise</h2>



<p>Als erstes probierte ich aus, direkt in React Native geteilte Notizen zu implementieren, wobei ich hier gleich einmal scheiterte. Deshalb entschied ich mich dann dazu, das Ganze mit einer WebView und einem zusätzlichen Webprojekt umzusetzen.</p>



<p>Um die Technologien und ihr Zusammenspiel zu verstehen, setze ich anfangs ein unabhängiges Projekt mit eigener Authentifizierung und Backend auf. Für TripSync passte ich dann vieles an das vorhandene React Native Projekt und das entsprechende Backend an und optimierte das Ganze für Mobile bzw. die WebView. Das ist der Grund, warum im Endeffekt zwei Projekte entstanden sind, bei denen ich dann mit der Zeit jeweils noch unterschiedliche Funktionen ergänzte.</p>



<h2 class="wp-block-heading">Screens und deren Features</h2>



<h3 class="wp-block-heading">Tripsync &#8211; geteilte Notizen</h3>



<p>Auf dem Notizen-Screen der App können Notizen zum aktuell im Profil ausgewählten Urlaub verfasst werden. Dabei gibt es eine Toolbar, die alle wichtigen Bearbeitungs- und Formatierungsmöglichkeiten beinhaltet:</p>



<ul class="wp-block-list">
<li>Rückgängig machen</li>



<li>Wiederholen</li>



<li>Rechtschreibprüfung ein-/ausschalten</li>



<li>Formatvorlage</li>



<li>Fett/Kursiv/Unterstrichen</li>



<li>Schriftfarbe</li>



<li>Textmarkierungsfarbe</li>



<li>Formatierung zurücksetzen</li>



<li>Ausrichtung</li>



<li>Aufzählung</li>



<li>Checkliste</li>



<li>Bild einfügen</li>



<li>Tabelle einfügen/bearbeiten</li>
</ul>



<p>Die Toolbar befindet sich immer am oberen Rand des Screens, wodurch das Formatieren erleichtert wird.  Viele der Bearbeitungsmöglichkeiten werden sofort auf den ausgewählten Text angewendet. Beim Tippen auf das Tabellen-Icon hingegen öffnet sich ein Bottom-Sheet, wo die Anzahl an Spalten und Zeilen für eine neue Tabelle festgelegt werden können. Befindet sich der Cursor in einer Tabelle, ändert sich das Tabellen-Icon und das Bottom-Sheet beinhaltet diverse Bearbeitungsmöglichkeiten, wie z.B. Spalte/Zeile einfügen oder löschen.</p>



<p>Unter der Toolbar sieht man, wer gerade online ist und an den Notizen arbeitet. Daneben befindet sich ein Icon, das angibt, ob die Notizen synchronisiert sind. Mittels Live-Cursor wird einem angezeigt, wo sich die anderen Personen befinden. Dieser ist basierend auf dem Namen der Person in einer speziellen Farbe eingefärbt.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1389" height="672" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/TripSync_Notizen.png" alt="" class="wp-image-15375"/></figure>



<p>Im Header gibt es außerdem die Möglichkeit, den Link zu dieser Notizen-Seite zu teilen oder zu kopieren, wodurch die Notizen auch im Browser geöffnet werden können. Hier gilt ebenso: Man muss sich anmelden und dem Urlaub angehören, um die Seite öffnen zu können. Die Funktionen sind dieselben wie in der App, nur kann man die Notizen hier zusätzlich auch drucken.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="2848" height="1530" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot-2026-02-09-104552.png" alt="" class="wp-image-15380" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot-2026-02-09-104552.png 2848w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot-2026-02-09-104552-1536x825.png 1536w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot-2026-02-09-104552-2048x1100.png 2048w" sizes="auto, (max-width: 2848px) 100vw, 2848px" /></figure>



<h3 class="wp-block-heading">Geteilte Notizen extra</h3>



<p>Das Nebenprojekt erinnert an Google Docs. Es lassen sich Notizen verwalten sowie Texte schreiben, bearbeiten und formatieren. Hierbei wurden weitere Technologien genutzt und zusätzlich andere Funktionen eingebaut (Verwaltung mehrerer Notizen, Kommentare, Benachrichtigungen, Erwähnungen und Einstellung der Schriftgröße).</p>



<p><strong>Home</strong></p>



<p>Generell kann die Web-Applikation nur verwendet werden, wenn man sich über Clerk angemeldet oder registriert hat. Der angemeldete Account wird dann oben rechts in der Ecke angezeigt. Daneben gibt es die Möglichkeit, die aktuelle Organisation auszuwählen oder eine neue zu erstellen. Auf der Home-Seite werden alle Notizen aufgelistet, die dieser Organisation zugeteilt sind. Man kann diese über das Drei-Punkte-Menü umbenennen oder löschen, oder über den Button eine neue Notiz erstellen. Erstellt man eine neue Notiz oder klickt auf eine vorhandene drauf, so gelangt man zur Detailseite.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="2880" height="1519" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot-2026-02-02-171834.png" alt="" class="wp-image-15376" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot-2026-02-02-171834.png 2880w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot-2026-02-02-171834-1536x810.png 1536w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot-2026-02-02-171834-2048x1080.png 2048w" sizes="auto, (max-width: 2880px) 100vw, 2880px" /></figure>



<p><strong>Detail</strong></p>



<p>Auf der Detailseite kann man zusammen mit anderen, die ebenso der Organisation angehören, Notizen schreiben. Links oben wird der Name der Notiz angezeigt, mit der Möglichkeit diese zu bearbeiten. Auf der rechten Seite sieht man die Avatare aller aktuell anwesenden Personen. Hinter dem Glocken-Icon verbergen sich die Benachrichtigungen, die einem mitteilen, wenn man wo erwähnt wurde. Die Toolbar beinhaltet dieselben Funktionen wie beim Projekt für TripSync, nur gibt es zusätzlich noch die Möglichkeit, die Schriftgröße zu ändern und Kommentare zu verfassen. Die Kommentare werden auf der rechten Seite des Screens angezeigt und man kann auf diese reagieren und antworten. Auch bei diesem Projekt werden einem die Positionen der anderen Personen mittels Live-Cursor angezeigt.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="2845" height="1522" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot-2026-02-02-172347-1.png" alt="" class="wp-image-15378" style="object-fit:cover" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot-2026-02-02-172347-1.png 2845w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot-2026-02-02-172347-1-1536x822.png 1536w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/Screenshot-2026-02-02-172347-1-2048x1096.png 2048w" sizes="auto, (max-width: 2845px) 100vw, 2845px" /></figure>



<h2 class="wp-block-heading">Technologien</h2>



<h3 class="wp-block-heading">Tripsync &#8211; geteilte Notizen</h3>



<p>App:</p>



<ul class="wp-block-list">
<li>React Native WebView</li>
</ul>



<p>Web:</p>



<ul class="wp-block-list">
<li>Next.js + React</li>



<li>TipTap Editor</li>



<li>Liveblocks für Realtime Collaboration</li>



<li>Zustand für State Management</li>



<li>Shadcn als UI-Library</li>
</ul>



<h3 class="wp-block-heading">Geteilte Notizen extra</h3>



<ul class="wp-block-list">
<li>Next.js + React</li>



<li>TipTap Editor</li>



<li>Liveblocks für Realtime Collaboration</li>



<li>Zustand für State Management</li>



<li>Shadcn als UI-Library</li>



<li>Convex als DB</li>



<li>Clerk für Authentication</li>
</ul>



<h2 class="wp-block-heading">Challenges und Learnings</h2>



<p>Anfangs wurde ich direkt mit dem Problem konfrontiert, dass es eine neuere Version der Expo SDK gab und mein Projekt nicht mehr mit der Expo Go App kompatibel war. Ich musste also diverse Packages des Projekts updaten und dann feststellen, dass es einen Versionskonflikt mit einer Library gab. Glücklicherweise wirkte sich das nicht kritisch auf das Projekt aus, sodass die Anwendung weiterhin einwandfrei funktionierte.</p>



<p>Die nächste Hürde war herauszufinden, wie ich generell geteilte Notizen in React Native umsetzen kann. Ich musste feststellen, dass das nicht so einfach geht, weshalb ich mich dann dazu entschied, eine WebView herzunehmen und ein neues Projekt aufzusetzen. TipTap Editor und Liveblocks haben mir hierbei die Arbeit erheblich vereinfacht.</p>



<p>Schwieriger wurde es, als es an den Feinschliff ging. Dabei musste ich besonders darauf achten, dass die Namen der Personen jederzeit korrekt angezeigt werden (auch in den Erwähnungen und Benachrichtigungen). In Bezug auf die Authentifizierung musste ich auch das ein oder andere ausprobieren. Vor allem in Zusammenhang mit der WebView brauchte ich eine Lösung, den JWT-Token übergeben zu können, der dann weiterverwendet werden kann. Allgemein musste ich mir auch überlegen, wie ich das mit der Authentifizierung mache, sodass das Webprojekt einerseits in der App verwendet werden kann, aber auch als eigenes Projekt im Browser funktioniert. Je nachdem, wo man sich befindet, wird man nämlich zur Login-Seite der App oder des Webprojekts geleitet, wenn man nicht authentifiziert ist.</p>



<p>Außerdem musste ich feststellen, dass es auf mobilen Geräten nicht so trivial ist, ein Element wie die Toolbar in Kombination mit einem Editor dauerhaft am oberen Bildschirmrand zu fixieren. Eine klassische <code>position: sticky</code>-Lösung, bei der die Toolbar zunächst einem anderen Element folgt und erst beim Scrollen oben &#8220;andockt&#8221;, funktionierte in diesem Fall gar nicht. Letztlich konnte ich das Problem lösen, indem ich die Toolbar als erstes Element platzierte und die Postion bei Scroll- oder Sprungbewegungen dynamisch aktualisiert habe, sodass sie zuverlässig am oberen Rand angezeigt wird.</p>



<h2 class="wp-block-heading">Fazit</h2>



<p>Durch das Projekt konnte ich wertvolle Erfahrungen mit verschiedenen neuen Technologien sammeln. Besonders im Bereich Realtime Collaboration habe ich gemerkt, wie mächtig Liveblocks in Zusammenhang mit TipTap Editor ist. Auch Convex als Realtime-Datenbank sowie Clerk für die Authentifizierung habe ich zuvor noch nie genutzt, war jedoch positiv überrascht, wie unkompliziert sich beide Lösungen integrieren lassen. Insgesamt hat mir das Projekt gezeigt, wie sinnvoll und effizient es manchmal sein kann, auf vorhandene Libraries zurückzugreifen, anstatt jede Funktionalität von Grund auf selbst zu entwickeln.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/projekt-tripsync-geteilte-notizen/">Projekt | TripSync &#8211; geteilte Notizen</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Projekt &#124; bHere &#8211; not on your phone</title>
		<link>https://mobile.fhstp.ac.at/studium/studium-projekte/blog-bhere-not-on-your-phone/</link>
		
		<dc:creator><![CDATA[David Grünberger]]></dc:creator>
		<pubDate>Mon, 23 Feb 2026 23:13:34 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Dokumentation]]></category>
		<category><![CDATA[Native Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[Bluetooth Low Energy]]></category>
		<category><![CDATA[digital-wellbeing]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[mesh]]></category>
		<category><![CDATA[Next.js]]></category>
		<category><![CDATA[Semesterprojekt]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15451</guid>

					<description><![CDATA[<p>Im 3. Semester des Master-Studiengangs Interactive Technologies (Masterklasse Mobile) stand das große Semestergruppenprojekt an. Als ganze Masterklasse (insgesamt 8 Personen) entwickelten wir über das ganze Semester hinweg bHere, eine soziale App, die Gruppen durch spielerische Mechaniken und Konsequenzen motiviert, beim gemeinsamen Ausgehen das Handy wegzulegen. Aufgabenstellung Die einzige Vorgabe war, dass das Projekt eine technische <a class="read-more" href="https://mobile.fhstp.ac.at/studium/studium-projekte/blog-bhere-not-on-your-phone/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/studium-projekte/blog-bhere-not-on-your-phone/">Projekt | bHere &#8211; not on your phone</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Im 3. Semester des Master-Studiengangs Interactive Technologies (Masterklasse Mobile) stand das große Semestergruppenprojekt an. Als ganze Masterklasse (insgesamt 8 Personen) entwickelten wir über das ganze Semester hinweg bHere, eine soziale App, die Gruppen durch spielerische Mechaniken und Konsequenzen motiviert, beim gemeinsamen Ausgehen das Handy wegzulegen.</p>



<h2 class="wp-block-heading">Aufgabenstellung</h2>



<p>Die einzige Vorgabe war, dass das Projekt eine technische Herausforderung beinhalten muss. Nachdem wir drei Ideen gesammelt hatten, entschieden wir uns dazu, eine App zu entwickeln, die Menschen motiviert, die Zeit wieder mehr mit ihren Liebsten zu genießen, ohne auf das Handy zu schauen. Die technische Herausforderung lag hierbei vor allem in der Verbindung zwischen den Geräten durch Bluetooth, aber auch in der Erstellung einer nativen, production-ready App.</p>



<h3 class="wp-block-heading">MVP</h3>



<p>Anfangs wurde von uns selbst ein MVP mit den grundlegendsten Funktionen definiert. Dazu zählte, sich als User einloggen bzw. registrieren und Sessions starten zu können, in der das Handy nicht verwendet werden sollte. Weiters ist es wichtig, die Verbindung zwischen den Geräten (egal ob NFC, BLE etc.) herzustellen und aufrechtzuerhalten. Die App sollte erkennen, wenn jemand das Handy verwendet, und das den anderen Geräten mitteilen. Wir hatten die Idee, dass die User*innen mehrere Modi spielen können, wobei nur der “Bill Splitter” zum MVP zählt. Dabei sollte man einen Rechnungsbetrag eingeben können und die App zeigt an, wer wie viel schlussendlich zahlen muss, basierend darauf, wie oft jeweils das Handy verwendet wurde. Die App sollte grundsätzlich nativ auf beiden Plattformen (iOS und Android) entwickelt werden und am Ende production-ready sein. Zudem hatten wir uns vorgenommen, eine CI/CD-Pipeline fürs Backend aufzusetzen und eine Website mit rechtlichen Informationen und Links zur App zu entwickeln. Die Website spielt vor allem für die Releases in den Stores eine Rolle.</p>



<h3 class="wp-block-heading">Nice To Have</h3>



<p>Als “Nice To Have” hatten wir uns primär die Erweiterung um 2 zusätzliche Modi vorgenommen: Beim Modus “Pot Lock” legen die Spieler*innen anfänglich fest, welcher Betrag pro Person in einen virtuellen Topf gegeben werden soll, und ab welcher Handynutzungsgrenze (“Threshold”) man seinen Einsatz verliert. Am Schluss teilen sich die Personen, die den Threshold nicht überschritten haben, den Topf. Beim Modus “Group Jar” legt die Gruppe einen Preis pro Handynutzung fest und am Ende der Session sagt die App, wer wie viel insgesamt in die Gruppenkasse zahlen muss.</p>



<p>Weitere Nice-To-Haves waren die Möglichkeit, dass Spieler*innen auch mittendrin einer Session beitreten können (falls jemand sich z. B. verspätet), dass sie sich nach einem Disconnect wieder reconnecten können und dass sie auch früher die Session verlassen können (falls jemand z. B. schon früher nach Hause gehen muss). Abgesehen davon wollten wir, dass die App auch komplett offline funktioniert, damit man sie auch in einer Keller-Bar mit schlechtem Empfang nutzen kann. Zusätzlich wollten wir die App zumindest in einem Store veröffentlichen.</p>



<p>Weiters hatten wir viele coole Ideen, die App durch Features wie Mini Games, einer KI-Funktion zum Rechnung-Scannen (für den Modus “Bill Splitter”), einer History, einem Streak, einer Realtime Abstimmung (für Notfallsituationen, in denen die Handynutzung toleriert wird), einem SSO-Login und einer direkten Zahlung in der App bzw. einer Importfunktion in eine App wie Splitwise oder Tricount zu erweitern, allerdings blieb dafür leider keine Zeit mehr &#8211; zumindest in diesem Semester. <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<h2 class="wp-block-heading">Verwendete Technologien</h2>



<h3 class="wp-block-heading">App</h3>



<p>Die Apps wurden jeweils nativ, in Swift für iOS und Kotlin für Android geschrieben, um Erfahrung im Bereich der nativen App-Entwicklung zu sammeln.</p>



<h3 class="wp-block-heading">Website</h3>



<p>Die Website wurde mit Next.js, einem React-basierten Framework entwickelt. Für das Styling wurde Tailwind CSS verwendet und für eine typsichere Entwicklung haben wir uns für TypeScript entschieden. Wir verwenden eine klassisch komponentenbasierte Architektur mit wiederverwendbaren Komponenten. Für die Containerisierung verwenden wir Docker.</p>



<h2 class="wp-block-heading">Projektablauf</h2>



<p>Die Arbeit am Semesterprojekt wurde in Sprints aufgeteilt (die an Masterklassen-Einheiten orientiert waren, wobei wir intern auch hin und wieder Meetings dazwischen hatten, wenn der Abstand zwischen den Masterklassen Einheiten zu lange war).</p>



<p>Als Projektmanagement-Tool und zum Verwalten des Backlogs wurde die Software &#8220;Linear&#8221; verwendet: vor jedem Sprint definierten wir, wer an welchen Tickets arbeitet und teilten diese im Team auf.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="3819" height="1440" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere6.jpg" alt="" class="wp-image-15471" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere6.jpg 3819w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere6-1536x579.jpg 1536w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere6-2048x772.jpg 2048w" sizes="auto, (max-width: 3819px) 100vw, 3819px" /><figcaption class="wp-element-caption"><strong>Abb. 1: Beispielsprint in unserem Linear-Setup</strong></figcaption></figure>



<h2 class="wp-block-heading">Das Endprodukt</h2>



<p>Wir haben die MVP Funktionalitäten und Nice-To-Haves wie beschrieben umgesetzt, mit den folgenden kleinen Anpassungen: Unsere App funktioniert komplett offline mit Bluetooth LE und die Session ID wird über das Scannen eines QR-Codes unter den Spieler*innen ausgetauscht. Das Backend hatten wir zwar anfänglich aufgesetzt, es wird momentan allerdings nicht benötigt. Zusätzlich zu den 3 Modi gibt es nun auch einen vierten Modus, das “Basic Leaderboard”, mit welchem sich User*innen ihre eigenen Regeln festlegen können. Weiters implementierten wir einen Solomodus, sodass die App nicht nur in der Gruppe, sondern auch alleine (z. B. beim Lernen) verwendet werden kann. Außerdem setzten wir eine coole CI/CD Pipeline für unsere Website auf und veröffentlichten unsere App in nicht nur einem, sondern in beiden Stores (Apple App Store, Google Play Store).</p>



<p class="has-medium-font-size"><a href="https://apps.apple.com/de/app/bhere-not-on-your-phone/id6757390918" target="_blank" rel="noreferrer noopener">Link zum iOS App Store-Eintrag</a></p>



<p class="has-medium-font-size"><a href="https://play.google.com/store/apps/details?id=app.bhere" target="_blank" rel="noreferrer noopener">Link zum Android App Store-Eintrag</a></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1885" height="1336" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere1.jpg" alt="" class="wp-image-15457" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere1.jpg 1885w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere1-1536x1089.jpg 1536w" sizes="auto, (max-width: 1885px) 100vw, 1885px" /><figcaption class="wp-element-caption"><strong>Abb. 2: Produkt-Teaser aus dem App Store</strong></figcaption></figure>



<p>Beim ersten Öffnen der App wird man durch ein Onboarding geleitet, in welchem die App kurz vorgestellt wird. Hierbei muss man auch einen Namen angeben, welcher innerhalb der App für einen selbst verwendet werden soll. Schließlich landet man am Homescreen (Abb. 3, links). Über das Profil-Icon rechts oben hat man die Möglichkeit, den festgelegten Namen zu ändern. Über den Button “Start New Session” startet man eine neue Gruppensession und kommt zum New Session Screen (Abb. 3, Mitte) &#8211; diesen Button muss allerdings nur eine Person in der Gruppe klicken. Alle anderen klicken auf “Join Session”, welcher die Kamera öffnet, um den generierten QR-Code zu scannen, welcher einen dann auch zum New Session Screen weiterleitet. Der Button “Go Solo” führt zum Solomodus, welcher weiter unten genauer beschrieben wird.</p>



<p>Am New Session Screen werden die aktuellen Teilnehmer*innen und der ausgewählte Modus angezeigt. Der “Host” der Session (die Person, die auf “Start New Session” geklickt hat) hat zudem die Möglichkeit, den Modus auszuwählen (Abb. 3, rechts) und notwendige Einstellungen vorzunehmen (z. B. den Preis pro Nutzung für den Group Jar Modus zu setzen).</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1891" height="1144" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere2.jpg" alt="" class="wp-image-15459" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere2.jpg 1891w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere2-1536x929.jpg 1536w" sizes="auto, (max-width: 1891px) 100vw, 1891px" /><figcaption class="wp-element-caption"><strong>Abb. 3: iOS App Screenshots</strong></figcaption></figure>



<p>Wie angekündigt, gibt es auch einen Solomodus. Mit dem Klick auf “Go Solo” am Home Screen kommt man zum New Focus Session Screen (Abb. 4, links), welcher wie ein Group Jar Modus funktioniert &#8211; man muss also den Preis pro Nutzung festlegen. Während der Session (Focus Session Screen, Abb. 4, rechts) sieht man die gesamte Nutzungsanzahl und wie viel Geld man sich in das eigene Sparschwein zahlen müssen wird.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1887" height="1144" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere3.jpg" alt="" class="wp-image-15460" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere3.jpg 1887w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere3-1536x931.jpg 1536w" sizes="auto, (max-width: 1887px) 100vw, 1887px" /><figcaption class="wp-element-caption"><strong>Abb. 4: iOS App Screenshots</strong></figcaption></figure>



<p>Ein weiteres spannendes Feature ist das Starten des Solomodus durch das Ablegen des Handys auf eine bestimmte Stelle. Wir stellen uns den Ablauf für User*innen folgendermaßen vor:</p>



<ol class="wp-block-list">
<li>User*in setzt sich an den Schreibtisch.</li>



<li>User*in legt das Handy auf eine Ablagefläche.</li>



<li>bHere App öffnet sich und Solomodus wird automatisch gestartet.</li>
</ol>



<figure class="wp-block-video"><video controls src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/NFC-Solomodus.mp4"></video><figcaption class="wp-element-caption"><strong>Video. 1: Starten des Solomodus per NFC-Tag</strong></figcaption></figure>



<p>Technisch funktioniert es mit einem NFC-Tag, der einen Deeplink enthält. Für die Projektevernissage 2026 haben wir 100 Tags (NTAG215) bestellt, beschrieben und hergeschenkt. Das Feature haben wir aktuell nur für Android implementiert.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="3382" height="1378" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere4.jpg" alt="" class="wp-image-15467" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere4.jpg 3382w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere4-1536x626.jpg 1536w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere4-2048x834.jpg 2048w" sizes="auto, (max-width: 3382px) 100vw, 3382px" /><figcaption class="wp-element-caption"><strong>Abb. 5: Android App Screenshots (Dark Mode Support)</strong></figcaption></figure>



<p>Die App ist auf beiden Plattformen sowohl in Light Mode, als auch in Dark Mode, verfügbar. </p>



<h2 class="wp-block-heading">Feedback und Verbesserungsmöglichkeiten</h2>



<p>Durch die Teilnahme an der Projektvernissage konnten wir wertvolles User-Feedback für potentielle zukünftige Erweiterungen und Verbesserungen der App sammeln: der wohl größte Pain Point der aktuellen Lösung ist die Latenz des implementierten BLE-Mesh. Vor allem bei Sessions mit einer hohen Teilnehmeranzahl kann es aktuell bis zu mehreren Minuten dauern, bis alle Daten zwischen allen Geräten ausgetauscht wurden. Sollte das Projekt noch weiterentwickelt werden, wäre das wohl eines der ersten Tickets, das umgesetzt werden müsste.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1768" height="1222" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere5.jpg" alt="" class="wp-image-15469" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere5.jpg 1768w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/bhere5-1536x1062.jpg 1536w" sizes="auto, (max-width: 1768px) 100vw, 1768px" /><figcaption class="wp-element-caption"><strong>Abb. 6: Einer unserer beiden Stände auf der Projektvernissage</strong></figcaption></figure>



<h2 class="wp-block-heading">Fazit aller Teilnehmer*innen</h2>



<p>Im folgenden Abschnitt möchten wir noch unser Fazit und unsere Erfahrungen teilen, die wir im Zuge dieses Semestergruppenprojekts sammeln konnten.</p>



<h3 class="wp-block-heading">David</h3>



<p>Die Arbeit an bHere war für mich eine intensive und lehrreiche Erfahrung. Technisch gesehen war die Implementierung der Bluetooth-Low-Energy-Kommunikation sicherlich die größte Hürde. Es hat einige Iterationen und Research gebraucht, weshalb ich umso stolzer bin, dass wir schlussendlich ein funktionierendes BLE-Mesh auf die Beine stellen konnten.</p>



<p>Eine wichtige Lektion war für mich die Herausforderung der parallelen Entwicklung auf zwei Plattformen. Es zeigte sich schnell: Wenn Details nicht vorab klar definiert sind, kann es passieren, dass sie auf iOS und Android unterschiedlich umgesetzt werden. Das führte dazu, dass die letzten Wochen und Tage vor der Abgabe besonders intensiv waren, da wir viele dieser kleinen Unstimmigkeiten noch angleichen mussten. Auch den Prozess der Veröffentlichung hatte ich unterschätzt – insbesondere die Vorbereitung des Store-Eintrags und die zwingende 14-tägige Testphase im Google Play Store benötigen mehr Vorlaufzeit, als man zu Beginn vermuten würde.</p>



<h3 class="wp-block-heading">Andreas</h3>



<p>Anders als bei der einwöchigen WildWeek, die wir im Laufe des 2. Semesters hatten, wurden wir in diesem Semester in einem technisch herausfordernden Semesterprojekt auf die Probe gestellt. Dies forderte ein hohes Maß an Eigenverantwortung und gute Teamkommunikation. Insbesondere, weil wir die App bhere auf zwei Plattformen (Android und iOS) gleichzeitig aufgebaut haben. Die Tatsache, dass wir uns nicht wie in der WildWeek auf direkten Wege schnell austauschen konnten, machte das Projekt umso lehrreicher, weil es auch nebenbei die heutige Home Office Arbeitsweise gut widerspiegelt hat.<br><br>Persönlich habe ich mich speziell im Bereich der Android App Entwicklung einbringen können. Dort war ich mit einigen Kollegen an der Gestaltung der UI unserer Screens dran. Neben dem Entwicklungs-Part habe ich auch an der Gestaltung unseres App-Logos beigetragen und fürs Marketing die Bierdeckeln designed, welche wir dann als Merch an die Interessent:innen verteilt haben. Ich fand die Tasks sehr abwechslungsreich und konnte mich erstmals tiefgründig mit der Programmiersprache Kotlin auseinandersetzen. Erste wirkliche Programmiererfahrung von Apps hatte ich damals noch mit Java.<br><br>Rückblickend betrachtet bin ich froh gewesen, mit unserem Team eine solch innovative App auf die Beine gestellt zu haben. Die Umsetzung hat gezeigt, dass wir mit vielen guten Ideen und einigem Kreativitätsvermögen, auch technisch herausfordernde Anforderungen meistern können. Nichtsdestotrotz ist zu erwähnen, dass der Weg dorthin nicht immer einfach war. Durch die Parallelentwicklung (Android/iOS) mussten wir ständig so up-to-date sein, dass auf beiden Systemen ein ziemlich einheitliches Design und verhalten aufgebaut werden konnte. Außerdem waren zahlreiche Testläufe nötig, bis wir eine stabile, plattformübergreifende Lösung gefunden hatten, um zwischen allen Endgeräten ein BLE-Mesh aufzubauen, über das die Kommunikation schließlich zuverlässig stattfinden konnte.</p>



<h3 class="wp-block-heading">Felix</h3>



<p>Dieses Gruppen-Semesterprojekt war für mich eine sehr spannende Herausforderung, weil wir in einem großen Team eine komplette App für iOS und Android entwickelt haben und diese dann auch veröffentlicht haben. Im Vergleich zu der Wild Programming Week war es finde ich viel anstrengender, weil wir einfach über einen langen Zeitraum uns immer koordinieren mussten. Aber im Großen und Ganzen hat alles gut funktioniert.</p>



<p>Zum Start haben wir zuerst ein Backend entwickelt für User Anmeldung, was dann aber nicht verwendet wurde, weil wir die App offline verwenden wollten, das war anfangs frustrierend, weil dabei Zeit draufgegangen ist, aber natürlich verständlich. Dann habe ich auch ziemlich am Anfang eine Website entwickelt, die, wie ich finde, sehr gut geworden ist. Ansonsten habe ich im Android Team und beim Merch für die Projekte Vernissage geholfen. Das fand ich am spannendsten, da ich Kotlin besser kennenlernen konnte.</p>



<p>Das gesamte Projekt hat mir sehr gut gefallen, vor allem weil es ein sehr reales und arbeitsnahes Projekt war. Wir waren ein gutes Team und haben gute Meetings abgehalten. Es hat alles gut funktioniert, wenn auch nicht ohne Schwierigkeiten.</p>



<h3 class="wp-block-heading">Caroline</h3>



<p>Im Vergleich zur Extreme Programming Week im 2. Semester hatten wir diesmal mehr Zeit fürs Einarbeiten und Ausprobieren, wobei die Entwicklung einer nativen App auf zwei unterschiedlichen Plattformen dafür neue Herausforderungen mit sich brachte. Ich habe hauptsächlich gemeinsam mit Katharina an der iOS-Version gearbeitet, was im Pair-Programming sehr gut funktioniert hat. Besonders hilfreich war dabei, dass sie bereits mehr Erfahrung mit Swift hatte, wodurch ich mich trotz anfänglicher Unsicherheiten schnell einarbeiten konnte.</p>



<p>Eine der größten Herausforderungen war die Umsetzung der Bluetooth-Low-Energy-Kommunikation. Da es auf iOS im Wesentlichen nur Core Bluetooth gibt, mussten wir viele Teile selbst erarbeiten. Zunächst mussten wir die Grundlagen von BLE verstehen und verschiedene Ansätze ausprobieren, bis wir zu einer funktionierenden Lösung kamen, die über mehrere Geräte hinweg funktioniert. Besonders hilfreich war Davids erste Umsetzung eines Meshs auf Android, auch wenn die Übertragung der Logik auf iOS aufgrund plattformspezifischer Unterschiede nicht einfach war.</p>



<p>Zusätzlich haben wir die iOS-Version der App im App Store veröffentlicht, was für mich eine neue und spannende Erfahrung war. Dabei habe ich einen Einblick in den Release-Prozess sowie die dafür notwendigen Schritte und Anforderungen von Apple bekommen.</p>



<p>Insgesamt hat mir das Projekt nochmal gezeigt, wie wichtig klare Absprachen im Team sowie ein möglichst fertiges und einheitliches Design zu Beginn eines Projekts sind. Fehlende oder unklare Definitionen führen später nämlich zu Mehraufwand und Inkonsistenzen zwischen den Plattformen. Rückblickend war das Projekt jedoch sehr lehrreich und hat mir sowohl technisch als auch im Bereich Teamarbeit wertvolle Erfahrungen gebracht.</p>



<h3 class="wp-block-heading">Sebastian</h3>



<p>Auch wenn wir im zweiten Semester die Wild Programming Week hatten, in welcher wir eine App innerhalb einer Woche entwickeln mussten, war dieses Semesterprojekt doch noch einmal ein ganz neues Erlebnis. Eine App über ein ganzes Semester zu entwickeln hat das Ganze leichter wie auch schwerer gestaltet.&nbsp;</p>



<p>Durch den Zeitrahmen hatten wir um einiges mehr Zeit zu entwickeln, nicht wie in der Wild Week. Aber auch durch diesen größeren Zeitrahmen wurde es schwerer, da es zum einen natürlich den Projektumfang erhöht hat. Gleichzeitig war es auch um einiges schwerer, den nötigen Arbeitsaufwand einzuschätzen, wodurch man zum Beispiel zu Beginn die Arbeitspakete zu klein für einen Sprint geschätzt hat.&nbsp;</p>



<p>Ich war vor allem mit UI Umsetzungen auf Android, zusammen mit der Implementierung der Nutzungserkennung zuständig. Bei der UI Umsetzung der die größte Herausforderung die Abstimmung zwischen Android und iOS. Zwar sind beide Plattformen von der gleichen Basis ausgegangen, auf beiden gab es aber kleiner Änderungen, welche dafür gesorgt haben, dass das Design nicht komplett einstimmig waren und hat extra Arbeit gegen Ende benötigt zum Anpassen.</p>



<p>Im Ganzen war es aber wieder ein gutes Erlebnis, mit einem tollen Team. Das ganze kam mit wichtigen Erfahrungen, wie Programmiersprachen Erlernung, App Store Einrichtungen und auch das erneute zeigen, wie wichtig gute Kommunikation und Abstimmung ist, um extra Arbeit zu vermeiden. Ich wäre jederzeit bereit, noch ein Projekt mit diesem Team zu machen.</p>



<h3 class="wp-block-heading">Jan</h3>



<p>Es war sehr nett, mit allen Studienkollegen der Masterklasse ein Projekt umzusetzen. Spannend war, wie sich jeder mit seinen Stärken eingebracht hat. Gerne hätte ich noch mehr an diesem Projekt gearbeitet und dafür auf andere Lehrveranstaltungen verzichtet.</p>



<p>Das Projekt hat sich im Laufe der Zeit in eine spannende Richtung entwickelt. Features, die wir anfangs eingeplant hatten, haben sich bei genauerer Betrachtung als nicht wichtig oder sogar als störend erwiesen und wurden daher gestrichen. Ich bin beispielsweise sehr froh über die Entscheidung, dass die App zu 100% offline funktioniert und es kein Backend gibt. Das ermöglicht den flexiblen Einsatz der App, zum Beispiel in Kellerlokalen ohne Mobilfunk, und hat den Vorteil, dass User ohne lästige Account-Erstellung direkt loslegen können. Für uns als Team bedeutet der Wegfall eines Backends, dass wir die Applikation kostengünstiger und mit weniger Aufwand betreiben können.</p>



<p>Wir können stolz darauf sein, dass wir eine neuartige und wirklich nützliche Applikation geschaffen haben, die ausreichend stabil läuft. Natürlich sehen wir noch einige offene Themen, die wir gerne angehen würden. Schade, dass wir vorerst kaum Zeit mehr für bHere haben werden, da wir uns nun auf unsere Masterarbeiten konzentrieren müssen.</p>



<h3 class="wp-block-heading">Katharina</h3>



<p>Das Projekt &#8220;bHere&#8221; war für mich eine besonders wertvolle Erfahrung. In meiner Rolle als Projektleiterin übernahm ich die Moderation der Sprint-Meetings, repräsentierte die Gruppe gegenüber unseren Stakeholdern (unseren Masterklassenleitern) und behielt den Gesamtüberblick über Fortschritt und offene Punkte.</p>



<p>Zusätzlich war ich gemeinsam mit Caro für die iOS-Entwicklung verantwortlich. Wir haben intensiv im Pair Programming gearbeitet und unsere Zusammenarbeit war dabei sehr produktiv. Besonders spannend war die Integration der BLE-Funktionalität – dank Davids Vorarbeit konnten wir diese auch erfolgreich in die iOS-App einbinden. Die BLE-Kommunikation auch plattformübergreifend zwischen iOS und Android zum Laufen zu bringen, stellte allerdings eine technische Herausforderung dar, da sich insbesondere das Debugging der Verbindung als nicht so trivial erwies.</p>



<p>Zeitlich war das Semester ebenfalls herausfordernder als gedacht. Im Vergleich zur &#8220;Wild Week&#8221; erforderte dieses Semestergruppenprojekt ein noch höheres Maß an Eigenorganisation und Abstimmung. Gerade gegen Ende kamen viele Aufgaben parallel zusammen, wodurch Priorisierung und Struktur besonders wichtig wurden. Für zukünftige Projekte nehme ich außerdem mit, wie wichtig ein frühzeitig klar definiertes und abgestimmtes Design ist, um plattformübergreifend noch effizienter arbeiten zu können.</p>



<p>Ein besonderes Highlight war für mich die erstmalige App-Einreichung im App Store. Der umfangreiche Einreichungsprozess hat uns auf der Zielgeraden noch einmal intensiv gefordert, ich konnte daraus aber auch sehr viel lernen.</p>



<p>Insgesamt habe ich sehr viel Arbeit und Engagement in dieses Projekt investiert – sowohl in die technische Umsetzung der iOS-App, als auch in die Organisation und Qualitätssicherung des ganzen Projekts. Umso stolzer bin ich auf das entstandene Produkt und auf das, was wir als Team erreicht haben.&nbsp;</p>



<h3 class="wp-block-heading has-medium-font-size">Matthias</h3>



<p>Das Projekt hat mir einen spannenden Einblick gegeben, wie komplex die Entwicklung einer mobilen App werden kann, wenn sie plattformübergreifend funktionieren und gleichzeitig komplett offline nutzbar sein soll. Besonders spannend fand ich es, gemeinsam im Team einen Lösungsansatz für unser Bluetooth-Mesh-System zu suchen. Vor allem, weil es für unseren Anwendungsfall keine bestehende Lösung gab. Ich habe dabei auch versucht, ein eigenes Konzept zu entwickeln. Dieses war zwar noch nicht vollständig ausgereift und hätte mehr Zeit benötigt, hat mir aber geholfen, die technischen Herausforderungen besser zu verstehen und viel von den Lösungsansätzen der anderen im Team zu lernen.</p>



<p>Intensiver beschäftigt habe ich mich mit der Umsetzung der Nutzungserkennung unter iOS. Ziel war es, das Verhalten der App während der Nutzung besser nachvollziehen und entsprechende Daten erfassen zu können. Dabei musste darauf geachtet werden, dass möglichst ähnliche Informationen wie auf Android gesammelt werden, damit die Nutzung plattformübergreifend vergleichbar bleibt. Dadurch konnte ich mich stärker mit dem Verhalten von Apps unter iOS auseinandersetzen und besser verstehen, wie Apps im Hintergrund arbeiten und wie solche Informationen sinnvoll für die Weiterentwicklung eines Produkts genutzt werden können.</p>



<p>Außerdem hatte ich die Möglichkeit, den Prozess rund um die Veröffentlichung der App im Apple App Store aus nächster Nähe mitzuerleben. Es war spannend zu sehen, welche Schritte und Anforderungen notwendig sind, bis eine App tatsächlich eingereicht und veröffentlicht werden kann.</p>



<p>Mit am meisten Spaß haben mir die Diskussionen rund um die User Experience der App gemacht. In den Meetings habe ich gemerkt, dass mich dieser Bereich besonders interessiert und ich mich dort auch am besten einbringen kann. Die Kombination aus technischen Überlegungen und der Frage, wie sich eine App für Nutzer:innen möglichst intuitiv bedienen lässt, fand ich besonders spannend.</p>



<p>Während des Projekts bin ich mit vielen neuen Themen in Berührung gekommen und konnte dabei viel lernen, sowohl technisch als auch in der Zusammenarbeit im Team. Gleichzeitig war die Arbeit durch die vielen gemeinsamen Lösungsansätze sehr motivierend, wodurch das Lernen fast nebenbei passiert ist.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/studium-projekte/blog-bhere-not-on-your-phone/">Projekt | bHere &#8211; not on your phone</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		<enclosure url="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/NFC-Solomodus.mp4" length="3462174" type="video/mp4" />

			</item>
		<item>
		<title>SOTA &#124; Edge Computing for Web Applications</title>
		<link>https://mobile.fhstp.ac.at/allgemein/sota-edge-computing-for-web-applications/</link>
		
		<dc:creator><![CDATA[Daniel Studera]]></dc:creator>
		<pubDate>Tue, 20 Jan 2026 10:15:05 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Wissenschaftliche Arbeit]]></category>
		<category><![CDATA[SOTA]]></category>
		<category><![CDATA[state of the art]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15238</guid>

					<description><![CDATA[<p>Abstract This paper examines the use of edge computing to enhance modern web applications that require low latency and high interactivity. Traditional cloud architectures struggle with increasing traffic and long network distances, which can lead to congestion and reduce the quality of the user experience. Content Delivery Networks (CDNs) were an early step towards decentralisation <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/sota-edge-computing-for-web-applications/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/sota-edge-computing-for-web-applications/">SOTA | Edge Computing for Web Applications</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-file"><a id="wp-block-file--media-facf1d4b-aaa1-487f-a050-7ccfc616e22c" href="https://mobile.fhstp.ac.at/wp-content/uploads/2026/01/SOTA_Edge_Computing_Studera.pdf">SOTA_Edge_Computing_Studera</a><a href="https://mobile.fhstp.ac.at/wp-content/uploads/2026/01/SOTA_Edge_Computing_Studera.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-facf1d4b-aaa1-487f-a050-7ccfc616e22c">Download</a></div>



<h2 class="wp-block-heading">Abstract</h2>



<p>This paper examines the use of edge computing to enhance modern web applications that require low latency and high interactivity. Traditional cloud architectures struggle with increasing traffic and long network distances, which can lead to congestion and reduce the quality of the user experience. Content Delivery Networks (CDNs) were an early step towards decentralisation because they cache content on servers closer to users, thereby shortening round-trip times. Edge computing builds on this concept by not only moving data, but also parts of the application logic, to nearby edge servers. This paper explains how serverless edge platforms execute eventdriven functions at the network edge to  enable faster, more dynamic page rendering and reduce latency, bandwidth requirements and energy usage on mobile devices. It also identifies open challenges for edge-based web applications, including limited resources on edge nodes, managing distributed application state and ensuring security and reliability across diverse infrastructures</p>



<h2 class="wp-block-heading">1 Introduction</h2>



<p>Edge computing has become a key technology for handling growing demands in low-latency data processing and real-time responsiveness. Unlike centralized cloud models, edge computing brings data processing and computation closer to end devices. This is particularly important for applications in the Internet of Things (IoT) and web environments, where responsiveness and localized control are essential. (Gupta et al., 2025, p. 94) (Batool and Kanwal, 2025, p. 1) In theory, the fastest way is always to skip the data transportation over the internet and compute tasks directly on the device (Varghese et al., 2016, p. 21). However, for smaller devices like phones or Internet-of-Things devices the computational power may be too small and has to be sourced out to servers. But real-time applications may have preferred response times under 100 ms, where classic cloud infrastructure cannot provide responses fast enough. (Varghese et al., 2016, p. 21) Web applications benefit from edge computing by reducing access time to distant cloud servers. Placing computing tasks at the network edge enables faster content delivery, dynamic page rendering and low-latency interactions. These benefits are crucial for
modern, interactive web services. (Varghese et al., 2016, p. 21)
Bringing some of the computation physically closer to the user
is part of a greater concept called the Content Delivery Network
(CDN). It not only focuses on edge computing but has evolved
over time into using AI techniques to predict traffic and optimize
routes, 5G technologies and also serverless architectures. (Tyagi,
2025, p. 402)
This paper provides a state-of-the-art overview of edge computing for web applications, focusing on latency, CDN evolution and
serverless edge platforms.</p>



<h2 class="wp-block-heading">2 Background: Web applications and Latency</h2>



<p>Today, Web-based Information Systems (WBIS) play a crucial role
in many sectors such as healthcare, smart cities and industrial automation. However, traditional centralized cloud computing often
struggles to meet the high performance requirements of these modern applications. The main problems are bandwidth limitations
and long physical distance between a device and the cloud servers.
To solve this, data processing must move closer to the source to
improve responsiveness and efficiency. (Fazil et al., 2025, p. 1)</p>



<h3 class="wp-block-heading">2.1 The Necessity of Low Latency</h3>



<p>Using a centralized cloud introduces unavoidable delays because
data has to travel a long distance. This is a major issue because
mobile data traffic is exploding, with things like video streaming accounting for a huge portion of network load (Zhao et al., 2021, p. 1).
Sending all this heavy traffic to central clouds causes congestion
and wastes bandwidth (Varghese et al., 2016, p. 21). Furthermore,
mobile devices often suffer from limited battery life. By processing
tasks at the network edge instead of sending them deep into the
cloud, we can not only reduce response time but also increase battery life (Javed et al., 2021, p. 16) (Zhao et al., 2021, p. 10). Ultimately,
high latency hurts the Quality of Experience (QoE), which is often
more important to users than simple technical metrics (Zhao et al.,
2021, p. 2).</p>



<h3 class="wp-block-heading">2.2 Real-Time Interaction and Dynamic Content</h3>



<p>The architecture of web applications has evolved significantly. Historically, websites relied on Server-Side-Rendering (SSR), where
the server builds the complete page for every request (Vepsäläinen
et al., 2023, p. 2). Later, developers shifted towards Client-SideRendering (CSR) and Single Page Applications (SPAs) to create
more interactive experiences that feel like desktop applications
without reloading the whole page (Vepsäläinen et al., 2023, p. 2). However, mobile devices often have limited computing power
and may not handle some complex tasks on their own (Varghese
et al., 2016, p. 21). Offloading these tasks to a distant cloud is often too slow. Edge computing helps by allowing dynamic content
generation at the network edge, supporting new hybrid techniques
like Incremental Static Regeneration (ISR) or the &#8220;Islands Architecture&#8221;, which allow dynamic content to be loaded efficiently without
rebuilding the whole site (Vepsäläinen et al., 2023, p. 3).</p>



<h3 class="wp-block-heading">2.3 Latency Thresholds and Requirements</h3>



<p>Real-time applications have strict limits on response times. Research
shows that interactive applications, such as visual guiding systems,
work best with a response time between 25ms and 50ms (Varghese
et al., 2016, p. 20-21). Traditional cloud infrastructures are often too
slow, with round-trip times reaching around 175ms (e.g. between
Canberra and Berkeley) (Varghese et al., 2016, p. 21). In industrial
or medical scenarios, such delays can cause fatal errors (Zhao et al.,
2021, p. 2). To consistently achieve response times fast enough,
computing tasks could be moved from the centralized cloud to edge
nodes (Cao et al., 2020, p. 85716).</p>



<h2 class="wp-block-heading">3 Content Delivery Network as a Precursor</h2>



<p>Before understanding edge computing, the greater concept to grasp
is the Content Delivery Network (CDN) and the necessity to provide content more efficiently (Vepsäläinen et al., 2023, p. 1,4). CDNs
represent a significant technological precursor in this evolution, establishing the fundamental concept of decentralizing data to reduce
latency and increase reliability (Vepsäläinen et al., 2023, p. 1,3-4).</p>



<h3 class="wp-block-heading">3.1 Basic Idea and Historical Context</h3>



<p>For a long time, websites were hosted on a central web server
that served static content (Vepsäläinen et al., 2023, p. 1). In the
early 1990s, when the internet and websites were an emerging
technology, bandwidth-intensive content such as images and web
pages were causing bandwidth congestion and brought up the use
of basic web caching (Zhao et al., 2021, p. 4). With the explosion of
multimedia traffic in the 21st century, especially videos, centralized
server architectures became insufficient due to high latency when
transmitting data over long geographical distances (Zhao et al.,
2021, p. 4) (Gupta, 2024, p. 2).
The fundamental concept of a Content Delivery Network is to
lower the physical distance by distributing content across a global
network of servers located closer to the end user (Siidorow, 2024,
p. 9-10). Instead of routing every request to a central origin server,
CDNs deliver static assets, such as HTML documents or media
files, from multiple geographically distributed points (Siidorow,
2024, p. 9-10). This architecture significantly reduces the RoundTrip Time (RTT) and reduces the load on the central servers as
well as other parts of the network’s infrastructure by minimizing
redundant data transmission (Gupta, 2024, p. 2) (Siidorow, 2024,
p. 9-10).</p>



<h3 class="wp-block-heading">3.2 Cache Hierarchies and Infrastructure</h3>



<p>The architecture of a CDN is based on the strategic deployment of
surrogate servers, or edge nodes at the network’s border (Vepsäläinen et al., 2023, p. 3-4) (Varghese et al., 2016, p. 20-21). These nodes function as proxy caches that replicate and store copies of popular
content to maximize availability and access speed and minimize
requests to far away central servers (Gupta, 2024, p. 5).
The distributed infrastructure represents a distinct shift from
the traditional cloud computing model. While cloud computing
relies on centralized data centers to gather resources and perform
long-term, heavy data analysis, this centralization often introduces
latency due to the physical distance to the data source. (Dong et al.,
2020, p. 314, 316) (Cao et al., 2020, p. 85715) In contrast, the edge
layer decentralizes operations by acting as an executor for real-time,
small-scale data processing, while the cloud remains the global
coordinator for tasks where high speeds are not a requirement
(Dong et al., 2020, p. 318) (Cao et al., 2020, p. 85716). Therefore, edge
computing and CDNs do not replace the cloud but supplement it
and work together to form a &#8220;Cloud-Edge&#8221;, where depending on
latency and processing power requirements the tasks are either
handled locally or forwarded to the central cloud (Dong et al., 2020,
p. 315-316) (Fazil et al., 2025, p. 5) (Cao et al., 2020, p. 85717).
To manage the limited storage at these edge nodes efficiently,
CDNs use sophisticated caching concepts like &#8220;Least recently used&#8221;
(LRU), &#8220;Least frequently used&#8221; (LFU) and &#8220;First in first out&#8221; (FIFO)
(Zhao et al., 2021, p. 12). In mobile network environments, these
caching strategies can extend to caching directly at base stations to
further reduce backhaul traffic and response time to improve the
user’s Quality of Experience (Zhao et al., 2021, p. 5,9).
</p>



<h3 class="wp-block-heading">3.3 Typical Request Flow</h3>



<p>The typical flow of a request in an architecture that uses Content
Delivery Networks differs significantly from the traditional communication between client and server. In a typical mobile edge caching
model, content requests coming in from the user are first received
by edge nodes located in the physically close environment of the
user, rather than traveling directly to a far away central data center
(Zhao et al., 2021, p. 8-9). To manage this traffic efficiently, CDNs
use global load balancing mechanisms that assign each request
to the closest available cache server (Dong et al., 2020, p. 318). In
this process, the Domain Name System (DNS) redirects the request
toward the nearest and most responsive cache node, based on the
user’s current network location (Zhao et al., 2021, p. 9).
A typical request flow could look like this:
</p>



<ul class="wp-block-list">
<li><strong>Routing and Identification:</strong><br>When a user requests content, the network identifies the optimal edge node for this request. This selection is handled by load-balancing algorithms that assign the request to the geographically nearest edge nodes (Zhao et al., 2021, p. 9) (Dong et al., 2020, p. 318)</li>



<li><strong>Content Exploration and Cache Lookup:</strong><br> The edge node
checks its local storage for the requested asset. If the content is not immediately available on the specific node, the
system must search the network to determine the best way
to retrieve it at the lowest cost. This is defined as the &#8220;content query problem&#8221; and may involve forwarding queries to
neighboring user equipment or base stations before traveling
the whole distance to the central network. (Zhao et al., 2021,
p. 10-11)</li>



<li><strong>Retrieval and Delivery:</strong> <ul> <li><strong>Cache Hit:</strong> If the file is available, it is delivered immediately to the user. </li>
<li> <strong>Cache Miss:</strong> If the content is not available on the node, it
is retrieved from higher-level servers, or in the worst case,
from the central cloud. The file is then stored locally using
replacement policies such as Least Recently Used (LRU)
to manage limited storage, and finally served to the user.
(Zhao et al., 2021, p. 10-12) </li></ul> <br>
This mechanism not only minimizes latency but also significantly reduces the load on backhaul links by minimizing
redundant data traffic to the core network. (Cao et al., 2020,
p. 85720)</li>
</ul>



<h3 class="wp-block-heading">3.4 Advanced CDN Architectures</h3>



<p>As the demand for real-time interactivity and dynamic content
grows, the traditional model of simple caching servers has proven to
be insufficient in some cases. CDN infrastructures have evolved into
complex architectures that build the base for smart edge computing.
This is shown by emerging strategies like Distributed, Hybrid and
Multi-CDN which are designed to enhance scalability, reliability
and performance under varying network conditions.</p>



<p></p>



<ul class="wp-block-list">
<li><strong>Distributed Architectures:</strong><br>In modern CDNs, the goal is a
highly distributed architecture where numerous edge servers
are deployed across multiple Points of Presence (PoPs). This
approach focuses on minimizing the physical path between
the user and the content and significantly reducing latency
and ensuring that high traffic volumes are handled locally
rather than overwhelming central data centers. (Tyagi, 2025,
406-407,414)
</li>



<li><strong>Hybrid Architectures:</strong><br> Hybrid architectures combine traditional on-premise edge servers with cloud-based CDN
services. This approach helps organizations adjust their resources based on real-time demand. During peak traffic, additional workloads can be offloaded to the cloud, while normal operations continue on local infrastructure. This idea is
based on the Cloud-Edge where both edge nodes and cloud
systems work together. (Tyagi, 2025, 406-407)</li>



<li><strong>Retrieval and Delivery:</strong><br>To ensure high availability and reduce the risk of vendor-specific outages, big enterprises increasingly use Multi-CDN strategies. In this model, the traffic is distributed across CDN services from multiple vendors based on real-time performance metrics, geographical location and cost. If a certain CDN encounters problems like congestion or latency in particular regions or globally, an AIdriven traffic management system can automatically reroute the users to better-performing providers. This hopes to ensure that big platforms like Amazon or Netflix won’t encounter big outages and interrupted service. (Tyagi, 2025, 406-407,414)</li>
</ul>



<p>These advanced architectures show the significance of transitioning from CDNs as passive content repositories to active intelligent delivery platforms.</p>



<h2 class="wp-block-heading">4 Edge Computing for Web Applications</h2>



<p>While Content Delivery Networks have successfully decentralized
the storage of static assets, the modern web requires the decentralization of application logic. Edge computing addresses this by
shifting computational tasks from centralized cloud data centers to
the edge of the network, closer to the end-user.</p>



<h3 class="wp-block-heading">4.1 Definition and Operational Principle</h3>



<p>Edge computing is defined as a distributed computing structure
that brings computation and data storage closer to the location
where it is needed, and therefore improves response times and
saves bandwidth (Fazil et al., 2025, p. 1). Contrary to traditional
cloud computing, where data is transmitted to distant data centers
for processing, edge computing uses resources at the edge of the
network, e.g. base stations, routers or micro data centers to execute
application logic (Cao et al., 2020, p. 85715) (Varghese et al., 2016,
p. 20).
In the specific context of web applications, it is often defined as
Serverless Edge Computing. Here, developers deploy event-driven
functions (Function-as-a-Service or FaaS) that run on edge nodes
(Batool and Kanwal, 2025, p. 1). Platforms like AWS Lambda@Edge
or Cloudflare Workers enable the execution of these functions in
response to events (e.g. HTTPS requests) directly at edge nodes
(Javed et al., 2021, p. 7-8) (Siidorow, 2024, p. 16,19-20). The serverless model on the edge is especially helpful for web applications,
because it reduces the need for always-on servers, instead starting
up containers only when requests occur, which optimizes resource
usage and costs (Javed et al., 2021, p. 2)</p>



<h3 class="wp-block-heading">4.2 Key Benefits: Latency, Bandwidth and Real-Time Processing</h3>



<p>As already stated, the primary advantage of using edge computing in web development is the necessity to overcome the physical
limitations of centralized cloud architecture.
</p>



<ul class="wp-block-list">
<li><strong>Latency Reduction:</strong><br>By processing requests at the edge, the
round-trip time (RTT) to the origin server is significantly
reduced (Fazil et al., 2025, p. 1) (Varghese et al., 2016, p. 21).
Research shows that in real-time applications such as gaming
or augmented reality using a distant cloud poses serious
latency problems due to geographical location (Varghese
et al., 2016, p. 21).</li>



<li><strong>Bandwidth Efficiency:</strong><br>Edge computing takes a lot of load off the central server infrastructure by processing data locally. Instead of transmitting lots of raw data to the cloud, edge nodes can filter, aggregate, or compress data and forward only relevant data to the central infrastructure (Varghese et al., 2016, p. 21). This is especially critical for bandwidthheavy content like video streaming or Augmented and Virtual Reality applications where a lot of congestion can be prevented by processing on the edge of the network (Gupta, 2024, p. 3).</li>



<li><strong>Real-Time Capabilities:</strong><br>Because edge computing is close
to the data source, it can process information with much
lower delay. This reduced transmission time enables realtime responses for the user and supports fast, context-aware
decisions in web applications. (Fazil et al., 2025, p. 1-2)</li>
</ul>



<h3 class="wp-block-heading">4.3 Beyond the CDN: From Caching to Computing</h3>



<p>Traditionally, Content Delivery Networks focused on caching static
assets to reduce latency and origin server load (Vepsäläinen et al.,
2023, p. 1) (Tyagi, 2025, p. 401-402). Edge computing evolves this
model by transforming edge nodes from passive caches into active
execution environments used to process dynamic content (Vepsäläinen et al., 2023, p. 4) (Tyagi, 2025, p. 411). This shift enables
programmable capabilities where data analysis, security filtering
and content generation happen at the edge of the network (Tyagi,
2025, p. 411) (Cao et al., 2020, p. 85715). Therefore, web applications
can implement dynamic rendering strategies like server-side rendering (SSR) or incremental static generation (ISR), directly at the
edge to optimize the Quality of Experience (QoE) for the end-user
(Vepsäläinen et al., 2023, p. 1,3,5).
</p>



<h3 class="wp-block-heading">4.4 Edge Functions and Runtimes</h3>



<p>Edge logic is primarily implemented via Serverless Edge Computing
or Function-as-a-Service (FaaS), which allows developers to deploy
stateless functions without infrastructure management (Batool and
Kanwal, 2025, p. 1-2). The runtimes used generally fall into two
categories:
</p>



<p></p>



<ul class="wp-block-list">
<li><strong>MicroVM-based:</strong><br>Architectures like AWS Lambda@Edge
utilize lightweight virtualization (e.g. Firecracker) to provide
isolation and broad language support, though they can struggle with &#8220;cold start&#8221; latencies when initialized (Siidorow,
2024, p. 16-17).</li>



<li><strong>Isolate-based:</strong><br>Platforms like Cloudflare Workers or Deno
Deploy use V8 isolates to run multiple functions within a
single process. In this approach &#8220;cold starts&#8221; are eliminated
and it reduces memory usage, but it is typically restricted to
JavaScript and WebAssembly environments (Siidorow, 2024,
p. 22-23,27-28)</li>
</ul>



<p>These runtimes enable developers to execute custom code directly at the network periphery, allowing them to shape client
requests and server responses, providing faster response times and
new possibilities (Vepsäläinen et al., 2023, p. 1).</p>



<p></p>



<ol class="wp-block-list">
<li><strong>Dynamic Request Manipulation:</strong><br>Functions can dynamically assemble web pages or tailor content in real-time based on the user’s location or device type, rather than serving generic static resources (Gupta, 2024, p. 8).</li>



<li><strong>Media Optimization:</strong><br>Edge functions can perform on-thefly transformations of media assets, such as resizing, cropping or formatting images and videos to match the capabilities of the requesting device (Gupta, 2024, p. 8).</li>



<li><strong>Security and Access Control:</strong><br>Complex access control
logic can be implemented directly at the edge to allow the
system to validate requests without long round trips to the
origin server (Gupta, 2024, p. 8).</li>



<li><strong>Real-Time AI Inference:</strong><br>Edge nodes are capable of running lightweight AI models to perform tasks such as realtime content analysis, automated content moderation, or
media analytics closer to the end-user. (Gupta, 2024, p. 5)</li>
</ol>



<h3 class="wp-block-heading">4.5 Challenges and Limitations</h3>



<p>Deploying web applications at the edge of the network can introduce challenges compared to using a centralized cloud.</p>



<ol class="wp-block-list">
<li><strong> Resource Constraints:</strong><br>Edge nodes often possess limited
computational power and memory compared to cloud data
centers. Therefore, highly efficient algorithms and effective
resource scheduling are needed (Batool and Kanwal, 2025,
p. 14).</li>



<li><strong>State Management:</strong><br>Connecting to centralized databases
from the edge can reintroduce latency due to the round-trip
time required for queries. While data replication to the edge
may be a solution, it introduces risks regarding data consistency and “replication lag”, making it difficult to maintain a
synchronized state across all nodes for real-time applications.
(Siidorow, 2024, p. 29)</li>



<li><strong>Security:</strong><br>Since Edge Functions are usually limited to a
small scope and need fewer privileges, they often have a
significantly reduced attack surface compared to full applications in containerized or virtual environments (Siidorow,
2024, p. 28)</li>



<li><strong>Cold Starts:</strong><br>Cold starts may occur when a certain edge
function is not used for a longer time. Depending on the
runtime, cold starts can present a significant problem by
causing delays during complex workloads such as AI functions, which negate the latency benefit of edge functions if
they take longer than the original round trip time to the data
center (Siidorow, 2024, p. 27)
</li>
</ol>



<h2 class="wp-block-heading">5 Conclusion</h2>



<p>This work demonstrates how edge computing builds upon the concepts of traditional content delivery networks (CDNs) to overcome
the latency and bandwidth limitations of centralized cloud architectures. Modern web-based systems depend on real-time interaction,
rich media, and personalization. In such scenarios, long network
paths to distant data centers can quickly slow down applications.
CDNs reduce this issue by caching static content at the edge; meanwhile, edge computing builds on this model by running parts of the
application logic on servers close to the user.
For web applications, this shift enables faster handling of requests, more responsive dynamic content and an improved quality
of experience, particularly on mobile devices or in scenarios that
require a lot of bandwidth. However, serverless edge platforms
also introduce new challenges. Edge nodes have limited computing
and memory resources, and coordinating distributed state is more
challenging. Cold starts and heterogeneous runtimes can further
reduce performance if not managed effectively.
Overall, current research indicates that the cloud and the edge
should be used together. Content Delivery Networks (CDNs) and
serverless edge platforms handle latency-sensitive tasks near the
user, while centralized cloud systems remain important for computationintensive workloads and long-term data storage. In the future, CDN
and edge strategies will become increasingly prominent, as realtime services, IoT deployments, and rich media applications continue to grow and push performance requirements beyond what
centralized cloud architectures can reliably provide.</p>



<h2 class="wp-block-heading">Acknowledgments</h2>



<p>Parts of the wording of this manuscript were supported by generative AI tools for language editing. All scientific content, structure<br>and conclusions were created and verified by the author.</p>



<h2 class="wp-block-heading">References</h2>



<ol>
  <li>
    Iqra Batool and Sania Kanwal. 2025. Serverless Edge Computing: A Taxonomy, Systematic Literature Review, Current Trends and Research Challenges.<br>
    arXiv:2502.15775 [cs.NI] https://arxiv.org/abs/2502.15775
  </li>
  <li>
    Keyan Cao, Yefan Liu, Gongjie Meng, and Qimeng Sun. 2020. An Overview on Edge<br>
    Computing Research. IEEE Access 8 (2020), 85714–85728. doi:10.1109/ACCESS.2020.<br>
    2991734
  </li>
  <li>
    Yunqi Dong, Jiujun Bai, and Xuebo Chen. 2020. A Review of Edge Computing Nodes Based on the Internet of Things. In Proceedings of the 5th International Conference on Internet of Things, Big Data and Security (IoTBDS). 313–320.<br>
    doi:10.5220/0009407003130320
  </li>
  <li>
    A. W. Fazil, A. Ghairat, and A. J. Kohistani. 2025. Advancing Web-Based Information<br>
    Systems Performance via Edge Computing: A Comprehensive Systematic Review.<br>
    GAME 2, 4 (2025), 1–20. doi:10.29103/game.v2i4.24189
  </li>
  <li>
    Ragini Gupta, Claudiu Danilov, Josh Eckhardt, Keyshla Bernard, and Klara Nahrstedt.<br>
    2025. Characterizing Container Performance in Edge Computing. In Proceedings of<br>
    the ACM SIGCOMM 2025 Posters and Demos (Coimbra, Portugal) (ACM SIGCOMM<br>
    Posters and Demos ’25). Association for Computing Machinery, New York, NY, USA,<br>
    94–96. doi:10.1145/3744969.3748438
  </li>
  <li>
    Sachin Gupta. 2024. Enhancing Content Delivery with Edge Computing in Media and<br>
    Entertainment. Zenodo. doi:10.5281/zenodo.13933556
  </li>
  <li>
    Hamza Javed, Adel N. Toosi, and Mohammad S. Aslanpour. 2021. Serverless Platforms<br>
    on the Edge: A Performance Analysis. arXiv:2111.06563 [cs.DC] https://arxiv.org/<br>
    abs/2111.06563
  </li>
  <li>
    Mikael Siidorow. 2024. Survey of Serverless Edge Computing for Web Applications.<br>
    doi:10.13140/RG.2.2.13600.39680
  </li>
  <li>
    Anuj Tyagi. 2025. Optimizing digital experiences with content delivery networks:<br>
    Architectures, performance strategies, and future trends. World Journal of Advanced<br>
    Research and Reviews 7, 2 (01 2025), 401–417. doi:10.30574/wjarr.2020.7.2.0230
  </li>
  <li>
    Blesson Varghese, Nan Wang, Sakil Barbhuiya, Peter Kilpatrick, and Dimitrios<br>
    Nikolopoulos. 2016. Challenges and Opportunities in Edge Computing. In<br>
    2016 IEEE International Conference on Smart Cloud (SmartCloud). IEEE, 20–26.<br>
    doi:10.1109/SmartCloud.2016.18
  </li>
  <li>
    Juho Vepsäläinen, Arto Hellas, and Petri Vuorimaa. 2023. Implications of Edge Computing for Static Site Generation. arXiv:2309.05669 [cs.HC] https://arxiv.org/abs/<br>
    2309.05669
  </li>
  <li>
    Yuhan Zhao, Wei Zhang, Longquan Zhou, and Wenpeng Cao. 2021. A Survey on<br>
    Caching in Mobile Edge Computing. Wireless Communications and Mobile Computing 2021 (2021), 1–21. doi:10.1155/2021/5565648
  </li>
</ol>

<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/sota-edge-computing-for-web-applications/">SOTA | Edge Computing for Web Applications</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Print2Mobile Event registration tool</title>
		<link>https://mobile.fhstp.ac.at/allgemein/print2mobile-event-registration-tool/</link>
		
		<dc:creator><![CDATA[Clemens Kavan]]></dc:creator>
		<pubDate>Tue, 21 Oct 2025 13:59:49 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Print2Mobile]]></category>
		<category><![CDATA[QR-Code]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15013</guid>

					<description><![CDATA[<p>Introduction Working in event management and also as staff during some of Austria’s biggest festivals, you start noticing some problems when it comes to registration of your clients: The company I currently work with (Adrenalin Company) specialises in the renting and operation high-thrill event tools that have certain risks associated to them in the event <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/print2mobile-event-registration-tool/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/print2mobile-event-registration-tool/">Print2Mobile Event registration tool</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Introduction</h2>



<p>Working in event management and also as staff during some of Austria’s biggest festivals, you start noticing some problems when it comes to registration of your clients: The company I currently work with (Adrenalin Company) specialises in the renting and operation high-thrill event tools that have certain risks associated to them in the event of misuse. Therefore, participants are required to sign so called liability exclusion disclaimers before attending.</p>



<h2 class="wp-block-heading">The problem</h2>



<div class="wp-block-group is-content-justification-left is-nowrap is-layout-flex wp-container-core-group-is-layout-558b13e7 wp-block-group-is-layout-flex">
<p>Currently, this process is very time-consuming, since every single person needs to read, fill out and sign these papers by hand, one by one. Apart from the need for thousands of printed sheets of paper per event, which then have to be scanned manually at the end of an event, this system causes long queue times and an overall mixed customer experience. This is exaggerated by the disclaimer being mostly printed in German, which makes it inaccessible for international guests.</p>
</div>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1233" height="1746" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot-2025-10-19-220033.png" alt="" class="wp-image-15015" style="width:331px;height:auto" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot-2025-10-19-220033.png 1233w, https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot-2025-10-19-220033-1085x1536.png 1085w" sizes="auto, (max-width: 1233px) 100vw, 1233px" /><figcaption class="wp-element-caption"><em>Disclaimer</em> <em>(German version) </em></figcaption></figure></div>


<h2 class="wp-block-heading">Solution</h2>



<div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-ad2f72ca wp-block-group-is-layout-flex">
<p>With this Print2Mobile prototype, I aimed to simplify and reduce the time needed for this necessary procedure: Outside the event booth and next to the queue line, a poster would be installed. It contains a QR code that directs participants to a website where they can read the legal document and fill out a form.</p>
</div>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="1183" height="1678" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot-2025-10-19-222326.jpg" alt="" class="wp-image-15023" style="width:278px;height:auto" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot-2025-10-19-222326.jpg 1183w, https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot-2025-10-19-222326-1083x1536.jpg 1083w" sizes="auto, (max-width: 1183px) 100vw, 1183px" /></figure></div>


<p>Clients can read the liability exclusion disclaimer and sign it easily using their smartphone. Not only does this reduce the need for printed forms, but it also allows all participants to sign simultaneously, reducing overall wait time. After filling out and submitting the form, the participants are given a personalised QR-code that contains all the relevant information for us organisers.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained">
<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="636" height="1360" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot-2025-10-19-222649.png" alt="" class="wp-image-15021" style="width:267px;height:auto"/></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="637" height="1357" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot-2025-10-19-222805.png" alt="" class="wp-image-15022" style="width:268px;height:auto"/></figure>
</div>
</div>
</div></div>



<h2 class="wp-block-heading">Future</h2>



<p>In future versions of this tool, the website would display the information in the system-used language, making it more accessible. The submitted information would be stored securely on a dedicated server for the legally required duration. On the other hand, there is a need to develop a specialised QR-code scanner application, that can read the participants codes and cross check them with the database in order to check their validity.</p>



<p>All in all, a user would first scan the QR-code on the poster and read, sign and submit the disclaimer. Then they would go to the event booth, where a staff member would scan each participant’s personalised code to verify its validity before they can enjoy the attraction.</p>



<p><strong>Disclaimer:</strong><em> </em><strong>This project is not associated with BAGJUMP in any way. It is a purely academic student project, created for educational purposes only.</strong></p>



<p>Link to the website: <a href="https://karavam.github.io/QR-Code-Website/">https://karavam.github.io/QR-Code-Website/</a></p>



<p></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/print2mobile-event-registration-tool/">Print2Mobile Event registration tool</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
