<?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>Tue, 11 Aug 2026 20:42:31 +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>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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph"></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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph"></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 class="wp-block-paragraph">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 class="wp-block-paragraph"></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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph">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>



<h2 class="wp-block-heading">Other Projects</h2>



<p class="wp-block-paragraph"><a href="https://swiva.app">Swiva</a> is a mobile app for saving ideas, places, recipes and activities from TikTok, Instagram, Maps and the web, and actually turning them into plans.</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>
]]></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 class="wp-block-paragraph">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-fbe4aca3 wp-block-group-is-layout-flex">
<p class="wp-block-paragraph">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 fetchpriority="high" 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="(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-8f761849 wp-block-group-is-layout-flex">
<p class="wp-block-paragraph">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 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="(max-width: 1183px) 100vw, 1183px" /></figure>
</div>


<p class="wp-block-paragraph">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-8f761849 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 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 class="wp-block-paragraph">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 class="wp-block-paragraph">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 class="wp-block-paragraph"><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 class="wp-block-paragraph">Link to the website: <a href="https://karavam.github.io/QR-Code-Website/">https://karavam.github.io/QR-Code-Website/</a></p>



<p class="wp-block-paragraph"></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>
		<item>
		<title>Print2Mobile &#124; TrackBack Vienna &#8211; Get to know Viennas Subway System (Print2Mobile Project)</title>
		<link>https://mobile.fhstp.ac.at/studium/studium-projekte/trackback-vienna-get-to-know-viennas-subway-system-print2mobile-project/</link>
		
		<dc:creator><![CDATA[Daniel Studera]]></dc:creator>
		<pubDate>Fri, 17 Oct 2025 10:10:21 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=14877</guid>

					<description><![CDATA[<p>Vienna’s subway system is one of the best in the world. It currently consists of five lines, with a sixth one under construction. While building the stations and tunnels over the past 47 years, the architects had to work around basements, the sewage system, and the Wienfluss. That’s why many stations have an interesting history <a class="read-more" href="https://mobile.fhstp.ac.at/studium/studium-projekte/trackback-vienna-get-to-know-viennas-subway-system-print2mobile-project/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/studium-projekte/trackback-vienna-get-to-know-viennas-subway-system-print2mobile-project/">Print2Mobile | TrackBack Vienna &#8211; Get to know Viennas Subway System (Print2Mobile Project)</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Vienna’s subway system is one of the best in the world. It currently consists of five lines, with a sixth one under construction. While building the stations and tunnels over the past 47 years, the architects had to work around basements, the sewage system, and the Wienfluss. That’s why many stations have an interesting history and appear somewhat unstructured, which can make them difficult to navigate.</p>



<p class="wp-block-paragraph">My idea was to create a virtual museum that can be accessed via QR codes printed on ads displayed directly in the stations. This way, people can learn about the station’s history while waiting for the train, riding it, or exploring the station. The aim is to make the project appealing not only to tourists but also to locals.</p>



<p class="wp-block-paragraph">For my poster and prototype, I chose Karlsplatz Station as an example because it has a fascinating history and is notoriously difficult to navigate due to its many levels and countless exits.</p>



<p class="wp-block-paragraph"></p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="725" height="1024" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Frame-3-2.png" alt="" class="wp-image-14886" style="width:409px;height:auto"/></figure>
</div>


<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">The slogan on the poster plays with the phrase “finding out”, which not only refers to literally finding a way out of the complex passages and levels of Karlsplatz, but also to discovering the station’s history. The language is English because many tourists pass through Karlsplatz every day. When the campaign is implemented for other stations, such as Seestadt, which is mainly used by locals, a German version of the poster would make more sense. This particular poster could be displayed not only on the platforms but also near the exits, as the advertisement directly references that scenario.</p>



<figure class="wp-block-gallery has-nested-images columns-4 is-cropped 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="393" height="852" data-id="14889" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Station-Karlsplatz.png" alt="" class="wp-image-14889"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="393" height="852" data-id="14888" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Stationen.png" alt="" class="wp-image-14888"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="393" height="852" data-id="14890" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Map.jpg" alt="" class="wp-image-14890"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="393" height="852" data-id="14887" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/More.png" alt="" class="wp-image-14887"/></figure>
</figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">After scanning the QR code, the content page for Karlsplatz opens. It contains four paragraphs focusing on the history, construction, and current role of Karlsplatz, supported by relevant images. There is also an option to listen to the content, the audio version should not exceed five minutes to keep the information concise and engaging. The language can be changed as well.</p>



<p class="wp-block-paragraph">If you’re interested in the history of other stations, you can visit the station overview and search for them. There is also a map where you can check out your surroundings and nearby stations. In the “More” section, there could be items such as the imprint, data policies, contact information, or links to other services and apps provided by the City of Vienna.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong>This Project is just a concept and not affiliated with Wiener Linien in any way. It is a purely academic student project, created for educational purposes only. No financial support, sponsorship, or compensation has been received from Wiener Linien or any other company. Any use of names or logos is solely for demonstration purposes within the prototype.</strong> </p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Sources:</p>



<ul class="wp-block-list">
<li>Person auf dem Poster: Foto von <a href="https://unsplash.com/de/@nate_dumlao?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" target="_blank" rel="noreferrer noopener">Nathan Dumlao</a> auf <a href="https://unsplash.com/de/fotos/mann-im-grauen-rundhalshemd-mit-braunen-haaren-rWJ2RthM-gc?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" target="_blank" rel="noreferrer noopener">Unsplash</a></li>



<li>Karlsplatzbild: Foto von <a href="https://unsplash.com/de/@shery0101?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" target="_blank" rel="noreferrer noopener">Shery Arturova</a> auf <a href="https://unsplash.com/de/fotos/ein-grun-weisses-gebaude-mit-einer-grunen-tur-V_j2ogDY5Vw?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText" target="_blank" rel="noreferrer noopener">Unsplash</a></li>



<li>Karte von https://www.openstreetmap.org/#map=15/48.18031/16.36414</li>



<li>Baustelle Karlsplatz Bild: https://newsv2.orf.at/stories/2424487/2425558/</li>



<li>United kingdom icons created by Freepik &#8211; Flaticon: https://www.flaticon.com/free-icons/united-kingdom</li>
</ul>



<h2 class="wp-block-heading">Other Projects</h2>



<p class="wp-block-paragraph"><a href="https://swiva.app">Swiva</a> is a mobile app for saving ideas, places, recipes and activities from TikTok, Instagram, Maps and the web, and actually turning them into plans.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/studium-projekte/trackback-vienna-get-to-know-viennas-subway-system-print2mobile-project/">Print2Mobile | TrackBack Vienna &#8211; Get to know Viennas Subway System (Print2Mobile Project)</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Print2Mobile &#124; Dishcovery</title>
		<link>https://mobile.fhstp.ac.at/studium/print2mobile-dishcovery/</link>
		
		<dc:creator><![CDATA[Kevin Kraushofer]]></dc:creator>
		<pubDate>Thu, 16 Oct 2025 10:31:34 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=14879</guid>

					<description><![CDATA[<p>(QR Codes in the pictures have no functionality) We’ve all been there, standing in front of the fridge or in the supermarket aisle not knowing what to cook. Meanwhile, tons of perfectly good food end up in the trash every day. Dishcovery aims to change that.With a simple scan at your local supermarket or your <a class="read-more" href="https://mobile.fhstp.ac.at/studium/print2mobile-dishcovery/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/print2mobile-dishcovery/">Print2Mobile | Dishcovery</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph" style="font-size:9px">(QR Codes in the pictures have no functionality)</p>



<p class="wp-block-paragraph">We’ve all been there, standing in front of the fridge or in the supermarket aisle not knowing what to cook. Meanwhile, tons of perfectly good food end up in the trash every day.</p>



<div class="wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-8f761849 wp-block-group-is-layout-flex">
<p class="wp-block-paragraph"><strong>Dishcovery</strong> aims to change that.<br>With a simple scan at your local supermarket or your advertising in the letterbox, the app instantly shows you recipes that match your preferences <em>and</em> the store’s current stock including products nearing their expiry date. But that’s not all: you can also add ingredients you already have at home, and Dishcovery will automatically include them in the recipe suggestions. Every recipe comes with clear quantities, can be saved to your favorites and added directly to a digital shopping list. The app also shows how many products you’ve helped rescue, turning sustainability into something measurable and rewarding.</p>
</div>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-gallery has-nested-images columns-4 is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="393" height="852" data-id="14898" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Homepage-1.png" alt="figma prototype Homepage recipe" class="wp-image-14898"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="393" height="852" data-id="14899" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/homepage2.png" alt="figma prototype Homepage ingredients" class="wp-image-14899"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="393" height="852" data-id="14897" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Filter.png" alt="figma prototype filterpage overview" class="wp-image-14897"/></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="393" height="852" data-id="14896" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Filter2.png" alt="figma prototype filterpage whats in your kitchen page." class="wp-image-14896"/></figure>
</figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Dishcovery not only inspires creativity in the kitchen — it makes sustainability simple, digital, and rewarding.</p>



<p class="wp-block-paragraph"></p>


<div class="wp-block-image">
<figure class="aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="840" height="1188" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/website-mit-fake-qr-code-1-1.jpg" alt="" class="wp-image-14919" style="width:376px;height:auto"/></figure>
</div>


<p class="wp-block-paragraph"><strong>This project is not affiliated with BILLA or the REWE Group in any way. It is a purely academic student project, created for educational purposes only. No financial support, sponsorship, or compensation has been received from BILLA or any other company. Any use of names or logos is solely for demonstration purposes within the prototype.</strong></p>



<p class="wp-block-paragraph">iPhone design by Luis Orea<br>Icons designed by Kryston Schwarze https://coolicons.cool/<br>Illustrations/Icons designed by Freepick www.freepik.com</p>



<h2 class="wp-block-heading">Other Projects</h2>



<p class="wp-block-paragraph"><a href="https://swiva.app">Swiva</a> is a mobile app for saving ideas, places, recipes and activities from TikTok, Instagram, Maps and the web, and actually turning them into plans.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/studium/print2mobile-dishcovery/">Print2Mobile | Dishcovery</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Projekt SS25 &#124; MixMatch (Fortsetzung)</title>
		<link>https://mobile.fhstp.ac.at/allgemein/projekt-ss25-mixmatch-fortsetzung/</link>
		
		<dc:creator><![CDATA[Andreas Kaiser]]></dc:creator>
		<pubDate>Thu, 16 Oct 2025 08:54:14 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Native Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Studium]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=14351</guid>

					<description><![CDATA[<p>Nach der ersten Umsetzungsphase habe ich entschlossen mit dem Projekt: Mix &#38; Match nun in die zweite Runde zu gehen. Aufbauend auf dem bisherigen Konzept und dem erhaltenen Feedback der Lektoren wurde die App gezielt weiterentwickelt und technisch auf ein neues Niveau gehoben. Der Fokus lag dabei auf der nativen Umsetzung, der Optimierung bestehender Funktionen <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/projekt-ss25-mixmatch-fortsetzung/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/projekt-ss25-mixmatch-fortsetzung/">Projekt SS25 | MixMatch (Fortsetzung)</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Nach der ersten Umsetzungsphase habe ich entschlossen mit dem Projekt: Mix &amp; Match nun in die zweite Runde zu gehen. Aufbauend auf dem bisherigen Konzept und dem erhaltenen Feedback der Lektoren wurde die App gezielt weiterentwickelt und technisch auf ein neues Niveau gehoben. Der Fokus lag dabei auf der nativen Umsetzung, der Optimierung bestehender Funktionen sowie der vollständigen Integration teils nur angedachter Features aus dem ersten Prototypen. Ergänzt wurde die Anwendung um ein neues, zentrales Feature: die sogenannten &#8220;Signature Drinks&#8221; – individuell erstellbare Rezepturen, die das Angebot an bestehenden Anleitungen zur Getränkemischung erweitert. Bevor ich näher auf die Fortschritte eingehe, möchte ich in aller Kürze das für die native Entwicklung genutzte Framework beschreiben &#8211; und zwar:</p>



<h2 class="wp-block-heading">Nativescript &#8211; eine kurze Vorstellung</h2>



<figure class="wp-block-image size-large"><img decoding="async" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxISEhUTEhIWFRUXFxgaGBgYFRgYGBgbHRgdFxoZGBUYHyggGh8lGxgYIjEhJSkrLi4uGh8zODMsNygtLisBCgoKDg0OGhAQGy0lHyUtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS8tLS0tLS0tLf/AABEIAKMBNgMBIgACEQEDEQH/xAAcAAEBAQADAQEBAAAAAAAAAAAAAQIDBAUHBgj/xAA+EAABAwIDBgQGAgIBAQcFAAABAAIRAyEEMUESUWFxgfAFkaGxBhMiwdHhMvEHFEJyM1Ric5Ky0ggVFyMl/8QAGQEBAQEBAQEAAAAAAAAAAAAAAAECAwUE/8QAHhEBAQEBAAMAAwEAAAAAAAAAAAERIQISMSJBURP/2gAMAwEAAhEDEQA/APnuet+HXy76QgxeZ9Zzkb7W0WpO/UT6Rzn2HRTaFp4zxkflerZHwdGGcr9lYHlke/RHAcvvn3Crgf6t7cuaw0jid9vxrE+kws7Mjj31WiDz8t0nkbqdAeMcNyzWoukxJ4E20+5Gq458geErQcNRa9p46dAo52QnrEays1YrRmNc9dJM8dVk3z3+m8nvLgmfffY5KcfbTv7LLTJG/iqW9z32UJ/Zz6qd9jyWVSVe96ioFu+HkoqKKlRAREQEREBERASURAKpI080HNB675UGrgZW5RPXVAYGZ7jjeLaLJH3/AK9FWzpMdiNyDezs5zoR+QZ0KjG8Jtz1kDlI4ZqbXUQLGDaZiRxOiZkwfO8woK5o08yRB1vOvBWb2BuTGm0J0OQiN3sADmxFxPSxjXgo5wiIsTM2k77+VuPG8Qf/AOLPMxwJ37yRluR51I0PI8LW3+aF7bw0X32iw87yjLznHBsyeX5UFbMRfda8f3BtyzlCMrajIk+Q1181l5NzYHqN2XTzumyJtbjnnbl7aLNZaDZtztORHSBc+/JQnOMzvgkzppOecKHKMpmL2MwBlrfijgN+sa+f75rFRadoI3Re2vMIlNsybg6xnffEbt+iizqV2gY4W1i+YUNOTJOX59T+UaRbK/567iqGTbqActe5Xr/XL4myeud85y+2XBRrOPpPrv8AwoG8+Hn6/pHc5tO7zGay0jwDui2XfE/2Ecd3oPTiq6JA4Tujio8ACbTuju0BZrUZOvQW1/tTLuJyPfNaJE3PqBwt5D3WRaRvE2Om7qFitRHazoORRwgx+Rbkgd3w66qEd/jv7LKoT977+qjgtAmNe+z5Kc1lplHFace+8+awoqnvvvJRVEEREQEREBEQICIiDQOtu9yDMbt+vO3dkieef39lA47+8/e6gbUcrcMuyqRJuRxj3tmoD3v6eXkrlnqPtbNBTeLZ8OlgFXiN4ExB4Rc77HvUIvJ97/33uUJsI3ee/nl6HmoNBpMxnHEzcDPn7I6lwO8nXWLjfGXBT5c5DPLM57oz3f0VARFoyy6xfTIDn1UQLxJzIPfWApTib9fbLvRaJsbzci/OfvlJzPNXf9J3/sxvvbjoFmoNJjOBwGWWUc84WHN6n+9ZtE5HgtB1hff9/qPCT6cVptMDMXBE/vWbdDKzUY2gCYEffWN26+q18w5yM9/pH61QOdYSBYaGc5mOcnkVl5HEkzu84vpy6LFRkwbGDrOV5ylFXgZSBpJA073SiyjsmNOmXLr7quMAHeRw55XzCOAGZ59PXLkkCCJvnz7uvYcwtzGfl6eSgOVs+HCx9fRCCcjqZv5yCjwI6T6x119VKqe5O7p7fdZi5MyOEfbdw3LUWsdOXd/us7HTv+s+C51qJ9h337KC2RzyjW6rsuRsL/3CjenfJZrUabkRnkN3QbtP0sEcMpie7/tAdSORtGu/op729+CzViR3++Co8u/PVZcVQfLd58FlpmeSKvKC6KzKKkKKAiIgIiICIhQUD9oRlx/MfZRU539IQOP2t6KgTYdOP7WVsxbMDz1OWnBQSZ3e3sqwgc+oI6zHXlxUn9/sZIDlP2NrzZBTpG+BGcTOWeqNGczP7vJ8+ojW1jOdT3wNjM/lRl9DfK+o4KCm3TPKZBixjl6qlmzmSP8ApMjzGWnooLWzB3/bMSL3H3hQAZg3nQAWz/KiNbMgzkBPc5SCFSQR/G99Mt18uAWHnXL15b4stt63m83uI5D/AIyfVRBzzrEkk6GOPCMvRGcBzgxeLQBY77buBKyWameE7piT1HvmpllnlGg8+MdlYqAEnfPDgDM8/uqY4kHSROsX87rMcZA5WzMAT/fFaLRMSBw65HhxO8cSsVKy12zJyi1xa99MsvRFKrPte357hFnEyO403F+Vv73rLnH049TnmqXCBlrI9M/LPioCN26I4HlC9e39OcNqeWXLXz/Cy6N0Tv53tutG9aLtctJj8dFHfo3v6His1qIHDK893PTuFmbzA7sT+fstC2v23GY3/gKA7pzPXfZYrSWHfTvooWHn3f1I9FSTGWmd+cLIy14QdyzViRvy/A/ahPZz8+8lrZF+9ePVZIMH169+iy0hPe7uUdPBdvw3AvxFalQZAfVe1jSchLokxnFyeS/oDw//ABx4Xh6QFSgyoRG1UrGSTvuYbyELHl5SNSa/nTjqov6Zd8CeFAScFQAF52BEb5Xk/EH+MPD8RRP+vSbQqxNOpTJ2Z02mA7LmnW07iFn/AEjXpX89qyjxsyHWIsRuIsRuzWS4Z6b1tlUUBVQEVDSZgEwJNshlJ3CSPNRAREQFVgPByI6GVooNNA9d49VaY1gdeNpzGqwtCYmLTExac4nIm/kVA3ZHh119VNL5d3joqIt6yUzz+wMT5a+nBBoHTSRnlxmOnHlksmO9d4nX98kid1+N/TX7ptctNBuvaFBpjrjLhN4/XeakbhO7XsiOvQTA7u0C+7zW2xAmRG7TW/UHjkiIHnQD6jvy/Gl+PlJzEWJuBcwMvffv4Kl1hf8AMcNI8s1HE65AjMZ5x538tVkcj4nSw3WN9SI4XtY+fGR9OfpPseX3RxBAk920073I4wc4PCIAuO+SzUItlprGm7f/AGpYG8GMx+dc/vnkqTvtbLORPp536o1/nu47yI785zUM9BFpka3vnw3oobyASI8tR05Is4jszn7x1nyUPdus+h8uqEE9Mx5jfxtvlNrLXs+nDivTYNnQRraL8R3vUYfU743/ALug6/vuVkTn9vX07hZtXFdGsA8oOf79FH3EgTnNvUx3mq+ez7grLW8Fm/xqHKeEb/fUqTrc6fifVXa8+XdsvRSJ3jp0+yik+vC/feihPPrfW/RCdbdx+1kGN/3/AEs2rj3/AIEP/wDSwf8A5zPdfSv/AKgKo/1cOwgn/wDeXn6SWw2m4XdlMuEDOJ3FfM/geqG+I4QuMD59MSd5dA9TC+2f5V+FK/iWFZSw7mNeyrt/WS0EbD2G7QYP1A5aLl5X8pa6ePx+LwHxHWo4LH+E4+1enhMQKDiZ+Yz5LiGB3/K12nUWsW3/AFn+FKwPhbGgEbFSqMiG3eX/AEk2I+q8ZGRmF2P8jfA7fEaLTT2W4mkPocbBw1pvIBMagxY8yD6H+PvAqmBwNPD1nML2mo5xYSWjae58AkCYBGgWLZfFqS6+HfBjQfGaAIBH+zUsR/1r994h8NUj4vh8bhQHUTiX0sSwC1Os1rmyW6B9upB/5r5n8P8AitPD+I08U+XU2VnvOyASQdqIBI3jVfovh/4/GF8SxOIDXuwuIqOc9kDbF5Y8NmNoZG9wTuC3ZWZjixngmFr+IY818Q6mGYioG0aNI1a9SX5tYAYaJGh1yi/r+D/A2Gw3i2Ho4h/zqVak6pRY+l/M7Dpp1mOy2Wy+bXAsF1sD8b4XZx9NzsVh/wDZxT6zK2HDBV2DsxTJJ+k2ORj6jca58S+PsO7HeHYtlOsW4Wm5tRry0vO0wsMPLvrIDiZMSRpKdXjmwvhtNrvHBgcS9tKnh6nzGfKYASDX2qI2hLWN2S0FujjuBHlVPgZjqvhraFV7qWObtFzmjap7ID6jbWkMJidWlc9P4nwFF3ivyf8AYLcdRcGbbWS2q/5xcDBEMBqtjM55xfl+C/j6lg8C6jVpufXpOquwrg0FrTUYbOJMj63PJgGzk6ccOD+A6Ljiqrq9b/VoVjQYadE1a1V7YDyGNBAaHSJgzGkX7Hh/wzhcB4nhf9yo2phK1M1KT6rDTG1A2W16b/4xI/lAktkC4HQ+EPi6nSwdTBYmpiqTXVPmMxGFfs1Wm201xkSCROs7R4FK3xVg/wDcpPdQr4vDU6bqbhjKpxFRxdBNVjarnMpuljbCJk5Wh1OP1Hxu7H/6uIGMwOGxGHMmhiMO4N/18w15mXECWzECA4EwV+ew/wAEYSnTwwx+Odh6+Kbt02CntMYD/E1XGwzGZaJkTaVyN+JPDMHhcXR8PZinvxbCwisWCnTDmlpgNzIDjoSYALoVd8U+GYunhX+I0sQa+FZsFtLYNPEARG1JBFxMfTmRJCdXjreEfBGHfh8VXxGNFNmGxHynVKYFSm5sMIczZkuLtsAAakWOvcreGCp4bg2MxT3YWr4oaNNppsBDXPq021JIDp2ROyci47gB5J+JsOfDsdhG0jSdiMU2rSY0D5bKbXUjslxMzFJ2lzGU27ngfxBSdhfDcC0PFWn4lRquJA2C01nWDpmZe3TfdXqcegf8dYQ4mvgaXiDji2t22MdS+iNlrg174ja+oH6TYEWMFXBeC+Hf/Y31qoLazamy+p8kGqyqA0fJDonY2oE5fUV63jvxF4fgfFMXifk4h2MY0M2QWfIcXUqcVJ/k07Ja056kAkr8h4V8S4Z3huIwWLFbafWdWZUpBkF8NIDw42G2JMaEwQQs9Xj8gXZbyBIzGlvvwVIM3vG8g6xx15rGyBnu0IN4lXdGYGnP3uAtsNxExnxOV4GWueeXNR4HIXgxY30npuieay/vKOGWfPjqtAW2puOHHOeZ7hQaAgmd0wQTB0Bnyv7KMbucLxrneLxw634pTzMCwvfOBxHA7ohRpvlkOO7TZ4Dy81EQC3KYI3nQEZ/311TBmYkDhmBE6935LLGibcIJAI6276LRdEEZ3yiM9Drc3j9qImyYndJtaB/E2jOfuo/WTMZj3ictNPZcjwLSTaP+IjoN1iePG0YaRMRI8jIByOtz/WayiB06xxJ+97n7BFyUQSeYnL/5AznnwVUwa5e0ZD3hD5++se3qh0BmD/entms5XtaI0O5ffawE695cOnmrfPceU27shHDf05eXeuS3K+vdt2nYWVR77yPMZfpD66958FQ7XPd7/hGmNSFlpBe2vW3O/JZM77fbLetNYXOAaJcTAjUmwAM5ZX/tWrRLcy3o9j//AGk+v5UqxxhQN0191omQsg/v7LKk/reORGS+g+Ff5fx9JgZUZSr7IgPcHNedPqLTDucDqvnoOqWUsl+rLj6f/wDmrFf91of+p68n4i/ynjsXSdRAp0GOEONPa23A2I23GwI3CeK/ChapsJIDcyQBxJsAs+sXayEUlJWkVF6Pg3gOKxZcMNQfV2Y2tmABOUucQJO6ZXSxmHfSe6nVaWPaYc1wgg7iCg40WqFMve1jbuc5rWiQJLjAEmwucyuXxHCPoVX0aoDalNxa4bQMEcQYKDgRczsJUFMVTTeKRdsipsnYLoJ2Q+ILoBMTNiuFARabTJyBPTcJPpdRzYidRI4iSJ82kIDSdO9VunVLSHNs4OBBFoIMggjIggXELnw/hlZ9KpXbSc6lSI+Y8RDJynXrFlrxLw2rhy0V6Zp7bQ9gcWy5jphwg5GPTJRXXxNZ73l9RznvJ+ovJLicrk3yELji3656rmpYSo5jqopvdTYQHvDTsNJIADn5AkkRO9c3inh78LVdQrANqs/k3aa6NpodmwkGQ4a+SI6lr6Zxn01t+0Ak5+k30n98VHVAdRfjfXfzXLTpOe5rGiXEwBeSTz1nOeGiDiLYiePMad9VyRbIZ9SdRGY75LVDCueC5oGyCAS5zWCTJA+ogEnZdZR7XtALgRBLYjZgtiQRvG0JneoM7RzmwtOdjkI6Zb1YOZAIAO+PX7b89VxjKRl69CuUuziL23ADOb8dc+SDDhkCLzaSRwIMm2QvwRsib+p/o2HFW8HO5jnqLeUbkjW4ta2d/tB8lEabcZ/xk5HWDz5cVXAx1vnc3zGR119yVKYHMZiIzgTxFp59FKjTaZ5nnx4+4URBbRp536CSBaPVFAGixIPIfhFMHKSen55cY9FLzp3+oWXbr8Yv7dFSMuXLruX1azjXMRa0Ec+v7Semkfs/pZmePT8buHFAYuLZRfvW/wCU0wkiJJv+b59PVTz/ADr+D0UjW0HiOmRQN5R03b+iy07HhtQCtScSBFRhJyH8hJJ4XXO2rsvDtmkyG1Y2KgeJNN2zM1HQZiMrleecp75d8FIWar1v9rb2Q5+1NNliRd/z2guO9+xInPZ1XLiHw9+29n/aO+T9TC1v01ALT9DNr5VnQBGVnLxG6HKNeOipcZk5kyc7m91MV6bA1xbTrPG04OD37YcWtDmvbtPky6G1Gi5MPaNwXMK9Nx+ZDQ+oHPgOazYeG7LfqIIYS75pEixNM2iV4hQJg9TE4mGvH8XkU2kmo2o9wl8kvaBeC1p1iJzK6vhrPrY+WhrXtLpc0EAEGYJk65Te2onqIor1aVTZoH6wdljHMBfT2fmfNpkgUI2i4N25cdA7QiaNhrgKT7Q542Xta76yA2mKjrNc1gBJuZ2xmV5KIPp/wP4lRbTxNF+Jwoa99B7qWIrfLDj8qmX1GYynYvD2ukBpu0GRMr1MJj8AKmLOGxeFNU4mkXVsa/5gfhhSph7adWoZqAEPAvNheNkr44inquvqDPH8JRw2FZROEO34hUbV+hoLMOcQ520GOJdSploaQXZNhfpsPXwwa+tTqYFtI+Jx82rsGm6l8kbbaNT+IeQHQZj+W9fCV2Dj6vyRQ+Y75QftinP07cbO1G+DCnqez6N8TeN4ap4VXoYSrQa1mNeRSOw17qJeXA0WESRtuaQRkwOGkL8JgKlMMBeWzekRqG1CD8wf9INYTpLOC8xFqTE17NGu1rwGvALXFgcHATFH5e0HA/xc+8zH1LrtxJ2WU3P+kUqoc2RG3tVSNre6dgieEZrzkTB9B/x98SUMFgMaavy3udVoj5DnN26tNzm06uxTJl0U3PO617L9dX8U8NdizVZi8MW08Fh2Utp9IutVql7Q+qHBrgzY2m7JdcZa/EEUviuvsPiHjeEFLxahhq+Da1z6T6Q2qQZUY6nSNcUyLPcSKgAFw4jI3XZZ4p4XWxmKpVauFbSp18LiKFQPphjy2k0PpscDDocy7Rq42zXxVCp6Hs+x/D3jnh1XDGpU/wBVjqlXEOxNKs+lTJa5zvlNg03Oe0MLA35ZFwM7r5RgXU27biXRslrRI2vrkTfMBm0CYzcF1Q2+U8t/MKFWTEterUr0SKpIkPfTeGh4a6SysKgP0kwHEwLWc297sPiNoB/07bqmIJG18sgvZSvTcZDTMwTnBAuvKcSc++A71VMW9j1+0eaqOxjf+0cA7ayO0dkmdkTLm2JEwTkSCTmuAumwNpMZ5d+6rOm4AgHP1Ed6zCciOuYve05ZDqoI4DOdfMae3qFqJGh1OU6DOJ199yO6RswJnT76dOKQNcs/Mb+Y045IIwfbWL9OJHkVS4ga5nzHHnffyzUfMmb/AIznn+UBvrzPX3/PNRGgNc+hPpnpM8YRSRFwYyGXObzfgog3MGRb7+Sg4HyvPFZ1773rTuz+F2RNr3/V5QcevtkrMnu/YWSLRP4HfDgoKDvm0ZzHf4SOvn2UcZv9785WXHv1RSe8kCEpMKCQorCp3+iioVFZUQEREBERAREQEREBERAREQEREALTBJE9hZRAAWgT3uy8tFAFY06zfdkgEde+HVUAGchzPc+SjR6czO7pNp4o0x33KggHPmNFuRn6brcIzgZf3xwtaZa365ex80FGRvbcLdcssrfhOERz000i+X33rLT596a6+aad8OKDVtzbDzy/HqjnSP1pp7nuEefa2cjd3zUec7R69314qDVKP+Rj19IPmiyXDda+Zv1KIKePfNMrd9ZU9FTOd1tB3X9c1O5UlUkdygE3Q25+yisiP190VO++iSiKCKqSrPfogiFCiAiIgIiICIiAiIgIiICIiAiIgIiFBQeST333dCfuk847lAaO/wBqjifvlwUIiyiDQZcDKdb/AIlSUc6e+X4TW3LQ+Sgne9UMPY4x7p37K/m98++CA4nz33P50zQagd9ApnuRo0iZsPNBHf1yVVbbUjlmiCKwgKhCorVJ4qnvNSUDPv7qKhRBVERAREQEREBERAREQEREBERAREQEREBERAREQERECEKShCCg95+nJTvuVdoqIKXdOCiqNMIBOcffy73J69fxl/SE3z3cEaFBdk5C/K/siROZHr+EQZlU9+aIqIqe/JEQRERAREQEREBERAREQEREBERAREQEREBERAREQEREBERAQlEQEREBERAnvvmVyNF28Y9TCIg40REH/9k=" alt=""/></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Mit <strong>NativeScript</strong>, das 2015 auf den Markt kam, wurde ein Framework präsentiert, das plattformübergreifende mobile Apps ermöglicht und zugleich direkten Zugriff auf die nativen Funktionen von Android und iOS bietet. Seit dessen Einführung wird es kontinuierlich weiterentwickelt und hat sich zu einer stabilen Lösung für die App-Entwicklung etabliert. NativeScript erlaubt es, Apps mit bekannten Web-Technologien wie JavaScript, TypeScript, Angular oder Vue.js zu erstellen, wodurch der Einstieg für Web-Entwickler besonders einfach ist. Gleichzeitig werden die UI-Komponenten direkt nativ gerendert, was eine nahezu maximale Leistung gewährleistet. Ein Großteil des Codes kann zwischen Android und iOS weiterverwendet werden, wodurch Entwicklungszeit und -kosten reduziert werden. Damit kombiniert NativeScript die Vorteile plattformübergreifender Entwicklung mit direktem API-Zugriff und nativer Performance.</p>



<p class="wp-block-paragraph">Mit diesem Wissen im Gepäck gelang es mir meine Erstentwicklung als reine WebApp in Angular ohne grundlegenden Neuanfang im nativen Bereich durchführen. Das hat mir die Möglichkeit eröffnet viele Teile der ursprünglichen Angular-Programmierung in eine App zu übertragen, auch wenn dies mit einer gewissen Komplexität einherging.</p>



<h2 class="wp-block-heading">Von einer Web-App zu einer nativen App</h2>



<p class="wp-block-paragraph">Der Wechsel von der ursprünglichen Angular Web-App zu einer nativen App mit NativeScript stellte einen entscheidenden Entwicklungsschritt dar. Während die erste Version ausschließlich im Browser funktionierte und auf klassische Web-Komponenten ausgelegt war, verlagerte sich der Fokus nun auf die mobile Nutzung, native Performance und eine tiefere Integration in die jeweilige Plattform. Diese Veränderung erforderte nicht nur technisches Know-how, sondern auch ein grundlegendes Umdenken im App-Design. Die Benutzeroberfläche musste für mobile Endgeräte neu konzipiert werden, denn alleine responsive Layouts reichten nicht mehr aus. Stattdessen waren eine intuitive Navigation, Gestensteuerung und schnelle Ladezeiten gefragt. Technisch konnten viele Angular-Module und Services zwar grundsätzlich übernommen werden, jedoch waren umfangreiche Anpassungen notwendig, insbesondere beim Routing, der Datenbindung und dem Zugriff auf systemnahe Funktionen wie dem Dateispeicher.</p>



<h2 class="wp-block-heading">Optimierter Suchalgorithmus</h2>



<p class="wp-block-paragraph">Der ursprüngliche Suchalgorithmus stellte einen klaren Engpass dar, da jede Filteranfrage direkt an die externe API gesendet wurde. Das führte zu langen Ladezeiten und unnötiger Netzwerklast. </p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 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 data-wp-context="{&quot;imageId&quot;:&quot;6aa4fe94a73bd&quot;}" data-wp-interactive="core/image" data-wp-key="6aa4fe94a73bd" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1180" height="1536" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/image-1.jpg" alt="" class="wp-image-14823"/><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">Alter (langsamer) Suchalgo. direkt über die API</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aa4fe94a781a&quot;}" data-wp-interactive="core/image" data-wp-key="6aa4fe94a781a" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1324" height="1531" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/api_data_loader_into_db.png" alt="" class="wp-image-14832"/><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">Methode, um die Drink-Daten der API in eine lokale DB zu übertragen</figcaption></figure>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow" style="flex-basis:33.33%">
<figure data-wp-context="{&quot;imageId&quot;:&quot;6aa4fe94a7c4b&quot;}" data-wp-interactive="core/image" data-wp-key="6aa4fe94a7c4b" class="wp-block-image size-full wp-lightbox-container"><img loading="lazy" decoding="async" width="1398" height="2010" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on--pointerdown="actions.preloadImage" data-wp-on--pointerenter="actions.preloadImageWithDelay" data-wp-on--pointerleave="actions.cancelPreload" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/filter_method_recipes_over_db-2.jpg" alt="" class="wp-image-14834" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/filter_method_recipes_over_db-2.jpg 1398w, https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/filter_method_recipes_over_db-2-1068x1536.jpg 1068w" sizes="auto, (max-width: 1398px) 100vw, 1398px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			data-wp-bind--aria-label="state.thisImage.triggerButtonAriaLabel"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.thisImage.buttonRight"
			data-wp-style--top="state.thisImage.buttonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button><figcaption class="wp-element-caption">Logik des neuen Suchalgo. (Daten werden direkt aus lok. DB geholt)</figcaption></figure>
</div>
</div>



<p class="wp-block-paragraph">Mit dem neuen, optimierten Ansatz werden die Rezeptdaten nun beim Start der Anwendung automatisch aus der API geladen und in die lokale Datenbank geschrieben. Die Suche erfolgt anschließend vollständig serverseitig über diese Datenbank, wodurch Abfragen deutlich schneller und stabiler laufen. Gleichzeitig bleibt die Filterlogik flexibel: Nutzer:innen können nach Kategorie, Alkoholgehalt und Zutaten suchen, ohne dass alle Kriterien zwingend gesetzt sein müssen.</p>



<h2 class="wp-block-heading">Die &#8220;Signature&#8221;-Drinks</h2>



<p class="wp-block-paragraph">Dieses neue Feature bietet dem/der User:in die Möglichkeit, sich seinen/ihren Drink (Cocktail) selbst nach eigenen Wünschen zusammenzustellen. Diese Drinks in Form von Rezepten werden entsprechend gekennzeichnet und sind mit dem/der Ersteller:in verknüpft. Die Datenspeicherung erfolgt in der selben Tabelle, wo die Drink Rezepte der API abgespeichert sind. Nach dem Anlegen eines &#8220;Signature&#8221;-Drinks stehen dem/der Ersteller:in die Möglichkeit zur Verfügung den Drink . Hier ein Blick in die App (Bild folgt):</p>



<p class="wp-block-paragraph"></p>



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



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



<p class="wp-block-paragraph">Mit dem Wechsel von einer WebApp auf eine native Mobile-App wurde das bestehende Design nicht vollständig neu entwickelt, sondern gezielt modernisiert und an mobile Nutzungsszenarien angepasst. Der Fokus lag dabei auf einer klareren visuellen Struktur, einer verbesserten Bedienbarkeit sowie einem konsistenten Erscheinungsbild über alle Ansichten hinweg.</p>



<p class="wp-block-paragraph">Ein wesentlicher Schritt war die Umstellung des UI-Designs auf das Utility-First-Framework <strong>Tailwind CSS</strong>, das eine deutlich effizientere Gestaltung und höhere Flexibilität bei der Komponentenentwicklung ermöglicht. Dadurch konnten wiederkehrende Layouts vereinheitlicht, Abstände und Typografie präzise gesteuert und das gesamte Erscheinungsbild minimalistischer und moderner gestaltet werden.</p>



<h3 class="wp-block-heading">Zutaten Suchfunktion</h3>



<p class="wp-block-paragraph">Bisher musst man sich durch eine lange Liste von Zutaten &#8220;quälen&#8221; &#8211; mit einem neuen Suchfeld bei den Zutaten wurde dies nun deutlich vereinfacht.</p>



<h2 class="wp-block-heading">Herausforderungen im Entwicklungsprozess</h2>



<p class="wp-block-paragraph">Anbei zwei wesentliche Herausforderungen, die sich während der Entwicklungsarbeit zunehmend herauskristallisiert haben:<br><br>Die mobile Umsetzung von MixMatch mit NativeScript und Angular brachte einige technische und strukturelle Herausforderungen mit sich. Der Umstieg von der bisherigen Angular-Webumgebung auf NativeScript erforderte eine Einarbeitung in neue Syntaxkonzepte und native UI-Komponenten. Viele Layouts und Funktionen ließen sich nicht direkt übernehmen, sondern mussten gezielt an mobile Anforderungen angepasst werden. Zudem NativeScript auch noch ein sehr &#8220;junges&#8221; natives Framework ist und die Dokumentation derzeit noch nicht als allzu ausgereift erscheint.<br><br>Gleichzeitig wurde deutlich, dass Teile des bestehenden Codes, insbesondere im Hinblick auf Wartbarkeit und Performance auf mobilen Geräten, zu komplex aufgebaut waren. Um dem entgegenzuwirken, habe ich z. B. Übersetzungen in separate Lokalisations-Files ausgelagert, anstatt sie direkt im Code zu halten. Auch die Datenverarbeitung wurde angepasst: Statt verschachtelter Aufrufe zu der thecocktaildb API erfolgt die Filterung nun über eine lokale Datenbank, nachdem alle Daten der externen API einmalig gespeichert wurden.</p>



<h2 class="wp-block-heading">Resümee mit Ausblick</h2>



<p class="wp-block-paragraph">Das Projekt stellte in mehrfacher Hinsicht eine wertvolle Lernerfahrung dar – insbesondere durch den mutigen Schritt, mit NativeScript in ein für mich völlig neues Framework einzusteigen. Dieser Ansatz bot die Gelegenheit, die Stärken und Schwächen der Plattform unmittelbar kennenzulernen: Auf der einen Seite die hohe Flexibilität, die tiefe Integration nativer Funktionen und die Möglichkeit, moderne Frontend-Technologien wie Angular und Tailwind zu kombinieren; auf der anderen Seite aber auch die typischen Herausforderungen eines jungen Frameworks – etwa eingeschränkte Dokumentation, komplexe Build-Prozesse und teils unerwartete Kompatibilitätsprobleme.</p>



<p class="wp-block-paragraph">Gerade dieser direkte Umgang mit den Schattenseiten und positiven Aspekten des Frameworks hat jedoch den größten Lerneffekt gebracht. Es entstand ein tieferes Verständnis für mobile App-Architekturen, die Bedeutung einer sauberen Code-Struktur.</p>



<p class="wp-block-paragraph">Auch nach Abschluss dieser Entwicklungsphase bleiben einige naheliegende Erweiterungen vorstellbar, die sich mittelfristig umsetzen lassen. Dazu zählt etwa eine Kommentarfunktion, mit der Nutzer:innen direkt Rückmeldung zu einzelnen Drinks geben oder sich austauschen können. Ebenso wäre es denkbar, die „Signature Drinks“ für andere sichtbar zu machen. Mit der individuellen Möglichkeit, eigene Rezepturen anderen Usern/Userinnen sichtbar zu machen, können persönliche Rezeptideen einem weiten Publikum präsentiert werden.<br>Ergänzend ließe sich eine einfache Einkaufsliste integrieren, in der fehlende Zutaten gesammelt und als Liste exportiert werden könnte. Diese funktionalen Erweiterungen würden, wie üblich, Hand in Hand mit weiterem Bugfixing, Code-Optimierungen und kleineren UI-Verbesserungen erfolgen, um die App sowohl technisch als auch inhaltlich weiter zu stabilisieren, der Benutzerfreundlichkeit hin zu optimieren und auszubauen.</p>



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



<p class="wp-block-paragraph"><strong>Beitragsbild</strong>: dieses wurde mittels Einsatz von KI erzeugt</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/projekt-ss25-mixmatch-fortsetzung/">Projekt SS25 | MixMatch (Fortsetzung)</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Blog &#124; Software Architekturen: Überblick und Entscheidungs­hilfe</title>
		<link>https://mobile.fhstp.ac.at/development/blogbeitrag/</link>
		
		<dc:creator><![CDATA[Matthias Frankowski]]></dc:creator>
		<pubDate>Thu, 16 Oct 2025 02:12:15 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[Trends]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=14858</guid>

					<description><![CDATA[<p>Bevor die erste Codezeile geschrieben wird, stellt sich die Frage: Wie sollte das Projekt aufgebaut sein, damit es später nicht unübersichtlich wird? Die gewählte Architektur legt fest, wie klar der Code bleibt, wie einfach sich neue Funktionen hinzufügen lassen und wie leicht Wartung und Erweiterung gelingen – unabhängig davon, ob an einer kleinen App allein <a class="read-more" href="https://mobile.fhstp.ac.at/development/blogbeitrag/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/blogbeitrag/">Blog | Software Architekturen: Überblick und Entscheidungs­hilfe</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Bevor die erste Codezeile geschrieben wird, stellt sich die Frage: Wie sollte das Projekt aufgebaut sein, damit es später nicht unübersichtlich wird? Die gewählte Architektur legt fest, wie klar der Code bleibt, wie einfach sich neue Funktionen hinzufügen lassen und wie leicht Wartung und Erweiterung gelingen – unabhängig davon, ob an einer kleinen App allein gearbeitet oder im Team ein größeres System entwickelt wird.</p>



<p class="wp-block-paragraph">In diesem Artikel werden fünf gängige Architektur-Muster vorgestellt, die wichtigsten Auswahlkriterien erklärt und eine praktische Check­liste für die Entscheidung geliefert. So entsteht bereits vor dem ersten Commit eine solide Basis für eine reibungslose Entwicklung.</p>



<h2 class="wp-block-heading"><strong>Klassische Schichten-Architektur</strong></h2>



<p class="wp-block-paragraph">Die bekannteste Herangehensweise ist die klassische Schichten-Architektur. Dabei wird eine Anwendung in drei Teile gegliedert:</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-center" data-align="center"><strong>Präsentation (UI)</strong><br>Hier läuft alles ab, was Nutzer sehen und anklicken.</td></tr><tr><td class="has-text-align-center" data-align="center"><strong>Geschäftslogik (Domäne)</strong><br>In dieser Mitte-Schicht stecken alle Regeln und Abläufe, die das System beherrscht – etwa Bestellungen verarbeiten oder Berechnungen durchführen.</td></tr><tr><td class="has-text-align-center" data-align="center"><strong>Datenzugriff</strong><br>Diese unterste Schicht kümmert sich um Datenbanken, Dateispeicher oder externe Dienste.</td></tr></tbody></table></figure>



<div style="height:33px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><strong>In der Praxis:</strong></p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Warum so beliebt</strong></td><td><strong>der Haken</strong></td></tr><tr><td><br>&#8211; <strong>Übersichtlichkeit</strong>:<br>Jede Schicht hat einen klaren Job, sodass man nicht in einem großen Code-Haufen nach Funktionen suchen muss.<br><br>&#8211; <strong>Teamarbeit:</strong><br>Frontend-, Logik- und Datenbank-Entwickler können parallel an ihren Schichten arbeiten.<br><br><strong>&#8211; Skalierung:</strong><br>Bei hohem Datenaufkommen lässt sich etwa nur die Geschäftslogik-Schicht auf mehr Servern verteilen.</td><td><strong>&#8211;</strong> <strong>Mehraufwand:</strong><br>Die Schichten sprechen untereinander – das kostet ein paar Millisekunden extra und etwas Komplexität.<br><br><strong>&#8211; Overkill für Kleinprojekte:</strong><br>Wenn die Anwendung nur ein paar Seiten hat, ist der strikte Schichtenbau oft unnötig.<br><br><strong>&#8211; Festgefahrene Abhängigkeiten:</strong><br>Wer später eine Schicht ändert, kann schnell viele andere Ebenen mitnehmen.</td></tr></tbody></table></figure>



<div style="height:16px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><strong style="white-space: normal;">Einsatzszenario:</strong></p>



<p class="wp-block-paragraph">Die klassische Drei-Schichten-Architektur eignet sich besonders für kleine bis mittelgroße Anwendungen und Solo- oder Kleinteam­projekte, weil sie schnell aufgesetzt ist und eine klare Trennung von UI, Logik und Datenzugriff bietet. Hält sich die Domäne jedoch in Grenzen, lässt sich damit langfristig gut arbeiten. Wachsen jedoch Funktionsumfang, Geschäftsprozesse oder Teamgröße, sollte man rechtzeitig über Modularisierung, DDD oder Microservices nachdenken, um die Wartbarkeit nicht zu gefährden.</p>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>Frontend-Pattern: MVC und MVVM</strong></h2>



<p class="wp-block-paragraph">In Frontend-Anwendungen treffen Darstellung, Logik und Nutzereingaben direkt aufeinander – ohne klare Struktur wird der Code schnell unübersichtlich. MVC und MVVM sind zwei bewährte Muster, die helfen, diese Bereiche zu trennen und Benutzeroberflächen wartbarer und übersichtlicher zu gestalten.</p>



<p class="wp-block-paragraph"><strong>Model-View-Controller (MVC):</strong></p>



<ul class="wp-block-list">
<li><strong>Model:</strong>&nbsp;Alle Daten und Geschäftslogik.</li>



<li><strong>View:</strong>&nbsp;Das, was man sieht und anklickt.</li>



<li><strong>Controller:</strong>&nbsp;Die Brücke dazwischen – nimmt Eingaben der View entgegen und aktualisiert Model oder View.MVC trennt klar, wer was tut, und macht es leicht, einzelne Teile auszutauschen.</li>
</ul>



<p class="wp-block-paragraph"><strong>Model-View-ViewModel (MVVM):</strong></p>



<ul class="wp-block-list">
<li>Ähnlich wie MVC, ergänzt aber das&nbsp;<strong>ViewModel</strong>, das View und Model synchron hält.</li>



<li>Änderungen am Model „binden“ sich automatisch in die View ein und umgekehrt.MVVM ist besonders beliebt in modernen UI-Frameworks (z. B. SwiftUI, Jetpack Compose), weil es mit Datenbindung und Deklarativität perfekt harmoniert.</li>
</ul>



<p class="wp-block-paragraph"><strong>Einsatzszenario:</strong></p>



<ul class="wp-block-list">
<li>MVC eignet sich für einfache Web-Apps oder klassische Desktop-Anwendungen.</li>



<li>MVVM glänzt, wenn Frameworks Datenbindung anbieten und man den UI-Code sauber von Logik fernhalten will.</li>
</ul>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>Monolith vs. Microservices</strong></h2>



<p class="wp-block-paragraph">Wenn die Anwendung wächst, stellt sich die Frage, ob man alle Funktionen in einem großen Block (Monolith) lässt oder in kleine, eigenständige Dienste (Microservices) aufteilt.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td class="has-text-align-left" data-align="left"><strong>Monolith</strong></td><td><strong>Microservices</strong></td></tr><tr><td class="has-text-align-left" data-align="left">Alles steckt in einer Code-Basis, ein Deploy, eine Datenbank.<br><br><strong>Vorteil:</strong><br>Einfacher Einstieg, weniger Infrastruktur-Overhead.<br><br><strong>Nachteil:</strong><br>Je größer, desto unübersichtlicher und schwerfälliger bei Updates.</td><td>Jede Funktion läuft als eigenständiger Dienst mit eigener Datenhaltung.<br><br><strong>Vorteil:</strong><br>Einzelne Dienste lassen sich unabhängig entwickeln, skalieren und deployen.<br><br><strong>Nachteil:</strong><br>Erfordert mehr Betriebskomplexität (Service-Registrierung, API-Gateways, Monitoring).</td></tr></tbody></table></figure>



<div style="height:18px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph"><strong>Einsatzszenario:</strong></p>



<p class="wp-block-paragraph">Für kleine Teams und einfache Projekte bleibt der Monolith oft die pragmatischere Wahl. Bei hoher Komplexität, vielen Teams oder strengen Skalierungsanforderungen lohnt sich der Umstieg auf Microservices.</p>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>Domain-Driven Design (DDD)</strong></h2>



<p class="wp-block-paragraph">Domain-Driven Design ist ein Ansatz, bei dem der Fokus auf dem fachlichen Kern einer Anwendung liegt, also auf dem, was das System inhaltlich wirklich tut. Statt sich zuerst mit Frameworks oder Datenbanken zu beschäftigen, geht es darum, die Abläufe und Begriffe einer bestimmten Domäne, zum Beispiel im Ressourcenmanagement, in der Buchhaltung oder im E-Commerce genau zu verstehen und diese im Code richtig abzubilden. Um diese Idee in der Praxis umzusetzen, nutzt DDD verschiedene Konzepte, die helfen, komplexe Systeme verständlich zu strukturieren und die Zusammenarbeit zwischen Fachexperten und Entwickelnden zu verbessern. Besonders wichtig sind dabei Ubiquitous Language, Bounded Contexts und der Unterschied zwischen Entities und Value Objects.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong>Ubiquitous Language</strong> bedeutet, dass Entwickelnde und Fachexperten eine gemeinsame Sprache verwenden. Fachbegriffe wie „Buchung“, „Ressource“ oder „Projekt“ tauchen dabei direkt im Code auf, zum Beispiel als Klassen oder Methoden. Das sorgt dafür, dass alle dasselbe Verständnis haben und sich leichter austauschen können.</p>



<p class="wp-block-paragraph"><strong>Bounded Contexts</strong> helfen dabei, eine große und komplexe Domäne in klar abgegrenzte Bereiche zu unterteilen. Jeder Bereich hat sein eigenes Modell und eigene Regeln. So bleibt der Code übersichtlich, und Änderungen in einem Teil der Anwendung führen nicht automatisch zu Problemen in einem anderen.</p>



<p class="wp-block-paragraph">Bei <strong>Entities</strong> handelt es sich um Objekte mit einer eindeutigen Identität, wie zum Beispiel ein Kunde, der sich im Laufe der Zeit verändern kann. <strong>Value Objects</strong> dagegen, wie ein Geldbetrag, sind unveränderlich und werden nur durch ihre Werteigenschaften beschrieben.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"><strong>Einsatzszenario:</strong></p>



<p class="wp-block-paragraph">Wenn die Domäne komplex ist und viele Experten involviert sind, sorgt DDD dafür, dass alle dasselbe Vokabular nutzen, im Code und in Meetings. Das reduziert Missverständnisse und verbessert die Wartbarkeit.</p>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading"><strong>Event-Driven Architektur &amp; CQR</strong>S</h2>



<p class="wp-block-paragraph">Bei modernen Anwendungen, die in Echtzeit reagieren oder viele Prozesse gleichzeitig verarbeiten müssen, stoßen klassische, linear aufgebaute Systeme schnell an ihre Grenzen. Um diesen Anforderungen gerecht zu werden, haben sich neue Architekturansätze wie die Event-Driven Architecture und Command Query Responsibility Segregation etabliert.</p>



<p class="wp-block-paragraph"><strong>Event-Driven Architecture (EDA):</strong></p>



<p class="wp-block-paragraph">Statt dass Komponenten direkt miteinander kommunizieren, reagieren sie auf Ereignisse, sogenannte Events. Wenn beispielsweise eine Bestellung aufgegeben wird, löst dieses Ereignis weitere Aktionen aus, wie den Versand einer Bestellbestätigung oder das Aktualisieren des Lagerbestands. Das System bleibt dadurch flexibel, entkoppelt und kann leicht erweitert oder skaliert werden.</p>



<p class="wp-block-paragraph"><strong>Command Query Responsibility Segregation (CQRS):</strong></p>



<p class="wp-block-paragraph">CQRS trennt Lese- und Schreibvorgänge klar voneinander: Commands verändern den Zustand eines Systems (zum Beispiel „Erstelle Rechnung“), während Queries nur Daten abfragen (etwa „Hole Rechnungsübersicht“). Durch diese Trennung lassen sich beide Bereiche gezielt optimieren. In Verbindung mit Event Sourcing, bei dem jede Zustandsänderung als Ereignis gespeichert wird, können Abläufe besser nachvollzogen und Systeme insgesamt stabiler und fehlertoleranter gestaltet werden, besonders bei komplexen oder verteilten Anwendungen.<br></p>



<p class="wp-block-paragraph"><strong>Einsatzszenario:</strong></p>



<p class="wp-block-paragraph">IoT-Netzwerke, Echtzeitanalysen, große Webplattformen oder Finanz­transaktionen, bei denen Latenzen niedrig und Nachvollziehbarkeit hoch sein müssen.</p>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-large-font-size wp-block-paragraph"><strong>Fazit</strong></p>



<p class="wp-block-paragraph">In meinem Semesterprojekt habe ich eine Webapp nach dem klassischen Drei-Schichten-Prinzip aufgebaut &#8211; Benutzeroberfläche, Geschäftslogik und Datenzugriff. Als alleiniger Entwickler konnte ich so in kurzer Zeit neue Features hinzufügen, ohne dass das System unübersichtlich wurde.</p>



<p class="wp-block-paragraph">In meiner aktuellen Arbeit an einer umfangreichen Ressourcenmanagement-Plattform mit über zehn Entwicklerinnen und Entwicklern reicht dieses einfache Grundgerüst allerdings nicht mehr aus. Deshalb sind wir auf Domain-Driven Design umgestiegen und nutzen im Code jetzt echte Fachbegriffe wie „Ressource“, „Room“ oder „Desk“. Diese Umstellung hat nicht nur die Einarbeitung neuer Teammitglieder erleichtert, sondern auch die Abstimmung mit den Fachabteilungen deutlich beschleunigt.</p>



<p class="wp-block-paragraph">Im Laufe verschiedener Projekte ist mir immer wieder aufgefallen, wie schnell selbst kleine Änderungen an der Architektur später großen Aufwand nach sich ziehen können. Wer sich bereits zu Beginn Gedanken über mögliche Wachstums- und Team­szenarien macht, schafft eine solide Grundlage für spätere Erweiterungen. Mir wurde dabei deutlich, dass sich ein wenig zusätzliche Planung im Vorfeld vielfach auszahlt, sei es durch eine bewusste Strukturierung in Schichten, eine klare Trennung fachlicher Kontexte oder den Einsatz von Entkopplungs­mechanismen. Dieses Vorgehen sorgt nicht nur für verständlicheren Code, sondern erleichtert auch das Hinzukommen neuer Mit­arbeiterinnen und Mitarbeiter. Letztlich zahlt sich jeder Moment, den man in die Architektur­entscheidung investiert, in Form von Zeitersparnis und weniger technischen Stolpersteinen aus.</p>



<div style="height:35px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="has-large-font-size wp-block-paragraph"><strong>Links</strong></p>



<ul class="wp-block-list">
<li><a href="https://learn.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/common-web-application-architectures">https://learn.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/common-web-application-architectures</a></li>
</ul>



<ul class="wp-block-list">
<li><a href="https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles">https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles</a></li>
</ul>



<ul class="wp-block-list">
<li><a href="https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/microservices">https://learn.microsoft.com/en-us/azure/architecture/guide/architecture-styles/microservices</a></li>
</ul>



<ul class="wp-block-list">
<li><a href="https://martinfowler.com/microservices">https://martinfowler.com/microservices</a></li>
</ul>
<p>The post <a href="https://mobile.fhstp.ac.at/development/blogbeitrag/">Blog | Software Architekturen: Überblick und Entscheidungs­hilfe</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Projekt &#124; Powda Club-Dashboard</title>
		<link>https://mobile.fhstp.ac.at/development/projekt-powda-club-dashboard/</link>
		
		<dc:creator><![CDATA[David Grünberger]]></dc:creator>
		<pubDate>Thu, 16 Oct 2025 01:25:15 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Dokumentation]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Studium]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[clerk]]></category>
		<category><![CDATA[convex]]></category>
		<category><![CDATA[Next.js]]></category>
		<category><![CDATA[Semesterprojekt]]></category>
		<category><![CDATA[shadcn]]></category>
		<category><![CDATA[stripe]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[webhooks]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=14812</guid>

					<description><![CDATA[<p>Im Rahmen des Semesterprojekts im zweiten Semester der Masterklasse Mobile habe ich ein Club Dashboard entwickelt – eine Webanwendung, mit der Skiclubs ihre Ausfahrten verwalten und Teilnehmer:innen direkt online buchen und bezahlen lassen können.Ziel des Projekts war es, einen funktionsfähigen MVP (Minimum Viable Product) zu erstellen, der eine vollständige End-to-End-Integration für Zahlungen bietet – von <a class="read-more" href="https://mobile.fhstp.ac.at/development/projekt-powda-club-dashboard/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/projekt-powda-club-dashboard/">Projekt | Powda Club-Dashboard</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Im Rahmen des Semesterprojekts im zweiten Semester der Masterklasse Mobile habe ich ein <strong>Club Dashboard</strong> entwickelt – eine Webanwendung, mit der Skiclubs ihre <strong>Ausfahrten verwalten</strong> und <strong>Teilnehmer:innen direkt online buchen und bezahlen</strong> lassen können.<br>Ziel des Projekts war es, einen <strong>funktionsfähigen MVP (Minimum Viable Product)</strong> zu erstellen, der eine vollständige End-to-End-Integration für Zahlungen bietet – von der Erstellung der Events bis zur erfolgreichen Bezahlung über die Website.</p>



<p class="wp-block-paragraph">In diesem Beitrag möchte ich den Aufbau der Anwendung, die verwendeten Technologien sowie einige Herausforderungen und Learnings während der Umsetzung vorstellen.</p>



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



<p class="wp-block-paragraph">Das Club Dashboard wurde als moderne Webanwendung mit Fokus auf Skalierbarkeit, Sicherheit und einfache Erweiterbarkeit entwickelt.<br>Hier ein Überblick über die zentralen Technologien:</p>



<h3 class="wp-block-heading">Framework: Next.js (App Router)</h3>



<p class="wp-block-paragraph">Für das Frontend kam <strong>Next.js</strong> mit dem neuen <strong>App Router</strong> zum Einsatz. Diese Architektur erlaubt serverseitiges Rendering (SSR), API-Routen und eine saubere Trennung von Client- und Server-Komponenten. Dadurch konnte ich sowohl UI-Logik als auch Backend-Funktionalität innerhalb eines Frameworks umsetzen.</p>



<p class="wp-block-paragraph"><strong>Vorteile:</strong></p>



<ul class="wp-block-list">
<li>Serverseitiges Rendering für bessere Performance und SEO</li>



<li>Integrierte API-Routen für serverseitige Logik (z. B. Payment Handling)</li>



<li>Moderne Struktur durch den App Router</li>
</ul>



<h3 class="wp-block-heading">Data Layer: Convex</h3>



<p class="wp-block-paragraph">Anstatt einer klassischen REST- oder GraphQL-API habe ich mich für <strong>Convex</strong> entschieden – eine innovative Backend-as-a-Service-Lösung, die reaktive Datenabfragen, serverseitige Funktionen und Auth-Integration out of the box bietet.</p>



<p class="wp-block-paragraph"><strong>Convex</strong> ermöglicht es, Daten- und Serverlogik in TypeScript zu schreiben und nahtlos mit dem Frontend zu verbinden. Dadurch entfällt ein Großteil der sonst notwendigen API- und Datenbankkonfiguration.</p>



<h3 class="wp-block-heading">Styling &amp; UI: TailwindCSS &amp; shadcn</h3>



<p class="wp-block-paragraph">Für das Styling habe ich auf <strong>TailwindCSS</strong> gesetzt – ein Utility-First-CSS-Framework, das schnelles Prototyping und einheitliches Design ermöglicht.<br>Zusätzlich kam <strong>shadcn</strong> zum Einsatz, eine leichtgewichtige Component Library mit Fokus auf Barrierefreiheit, Dark Mode und Customizability.</p>



<p class="wp-block-paragraph"><strong>Vorteile dieser Kombination:</strong></p>



<ul class="wp-block-list">
<li>Konsistentes UI mit klarer Design-Sprache</li>



<li>Wiederverwendbare Komponenten</li>



<li>Effiziente Entwicklung durch Utility-Klassen</li>



<li>Code Ownership: Components werden einfach ins Projekt kopiert</li>
</ul>



<h3 class="wp-block-heading">Authentifizierung: Clerk</h3>



<p class="wp-block-paragraph">Die Authentifizierung wird durch <strong>Clerk</strong> umgesetzt – denselben Anbieter, den ich bereits im ersten Semesterprojekt genutzt habe. Clerk bietet ein modernes User Management inklusive OAuth-Integration und JWT-Handling, was eine einfache Verbindung mit Convex und Next.js ermöglicht.</p>



<p class="wp-block-paragraph">Durch Clerk konnte ich schnell eine sichere Login-, Logout- und Session-Logik aufsetzen, ohne selbst komplexe Authentifizierungssysteme implementieren zu müssen.</p>



<h3 class="wp-block-heading">Payment Provider: Stripe</h3>



<p class="wp-block-paragraph">Ein zentrales Feature dieses Projekts war die <strong>Integration von Stripe</strong> als Payment Provider. Nutzer:innen können direkt über die Website eine Skiausfahrt buchen und bezahlen.<br>Dazu wurde das Stripe Checkout-System in die App eingebunden – inklusive <strong>Webhook-Handling</strong>, um Payment-Status-Änderungen serverseitig zu verarbeiten.</p>



<p class="wp-block-paragraph"><strong>Beispielhafte Flows:</strong></p>



<ul class="wp-block-list">
<li>User wählt eine Ausfahrt aus → Klick auf „Buchen“</li>



<li>Stripe Checkout öffnet sich → Zahlung erfolgt</li>



<li>Stripe sendet einen Webhook an das System → Buchung wird bestätigt und gespeichert</li>
</ul>



<p class="wp-block-paragraph">Diese End-to-End-Integration war der Kern des Projekts und erforderte ein gutes Zusammenspiel zwischen <strong>Frontend, Convex Backend und Stripe Webhooks</strong>.</p>



<h2 class="wp-block-heading">Kommunikation &amp; Webhooks</h2>



<p class="wp-block-paragraph">Ein spannender Teil des Projekts war die <strong>Kommunikation zwischen den verschiedenen Systemen</strong>.<br>Sowohl Stripe als auch Clerk arbeiten mit <strong>Webhooks</strong>, um Echtzeit-Informationen an das System zu senden (z. B. erfolgreiche Zahlungen oder neue Benutzer).<br>Die Webhooks werden über API-Routen in Next.js empfangen und anschließend in Convex weiterverarbeitet – beispielsweise um Buchungsdaten zu aktualisieren oder Rechnungen zu speichern.</p>



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



<p class="wp-block-paragraph">Während der Entwicklung gab es mehrere interessante Herausforderungen:</p>



<ul class="wp-block-list">
<li><strong>Webhook-Handling:</strong> Das Zusammenspiel von Stripe, Clerk und Convex erfordert saubere Trennung von Sicherheits- und Logikschichten. Insbesondere das Validieren von Webhook-Signaturen war anfänglich fehleranfällig.</li>



<li><strong>Datenmodellierung in Convex:</strong> Da Convex ein eigenes Datenmodell nutzt, war es notwendig, sich in dessen Schema-System einzuarbeiten.</li>



<li><strong>SSR + Client-Komponenten:</strong> Der Wechsel zwischen Server- und Client-Komponenten im Next.js App Router war zunächst ungewohnt und erforderte ein gutes Verständnis des Rendering-Modells.</li>
</ul>



<p class="wp-block-paragraph">Trotz dieser Hürden war die Entwicklung äußerst lehrreich – vor allem im Hinblick auf <strong>Payment-Flows, Security und API-Kommunikation</strong>.</p>



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



<p class="wp-block-paragraph">Das Club Dashboard war ein spannendes Projekt, das mir erstmals die Umsetzung einer <strong>vollständigen End-to-End-Integration mit Stripe</strong> ermöglicht hat.<br>Durch den Einsatz moderner Tools wie <strong>Next.js, Convex, Clerk und Stripe</strong> konnte ich einen funktionalen MVP umsetzen, der reale Buchungsprozesse abbildet.</p>



<p class="wp-block-paragraph">Besonders interessant war zu sehen, wie gut sich die verschiedenen Services über <strong>Webhooks und API-Routen</strong> integrieren lassen – und wie wichtig saubere Datenflüsse und Sicherheit in einem Payment-System sind.</p>



<p class="wp-block-paragraph">Im nächsten Schritt plane ich, das Dashboard um weitere Funktionalitäten zu erweitern, um einem produktionsreifen Produkt näher zu kommen, das sich veröffentlichen und vertreiben lässt.</p>



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



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1996" height="1594" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/landing_page.jpg" alt="" class="wp-image-14844" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/landing_page.jpg 1996w, https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/landing_page-1536x1227.jpg 1536w" sizes="auto, (max-width: 1996px) 100vw, 1996px" /><figcaption class="wp-element-caption">Screenshot: Landing Page</figcaption></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1993" height="1591" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/ausfahrten.png" alt="" class="wp-image-14845" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/ausfahrten.png 1993w, https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/ausfahrten-1536x1226.png 1536w" sizes="auto, (max-width: 1993px) 100vw, 1993px" /><figcaption class="wp-element-caption">Screenshot: Ausfahrtenliste mit Buchungsoption</figcaption></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="2011" height="1600" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/dashboard.png" alt="" class="wp-image-14847" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/dashboard.png 2011w, https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/dashboard-1536x1222.png 1536w" sizes="auto, (max-width: 2011px) 100vw, 2011px" /><figcaption class="wp-element-caption">Screenshot: Ausfahrtenverwaltung am Dashboard</figcaption></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1990" height="1429" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/zahlungsinfos.png" alt="" class="wp-image-14848" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/zahlungsinfos.png 1990w, https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/zahlungsinfos-1536x1103.png 1536w" sizes="auto, (max-width: 1990px) 100vw, 1990px" /><figcaption class="wp-element-caption">Screenshot: Eingebettete Stripe Account Komponenten am Dashboard</figcaption></figure>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/projekt-powda-club-dashboard/">Projekt | Powda Club-Dashboard</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
