## 1 Introduction  
The rapid evolution of digital technology led to a profound shift in how software architectures have been designed, developed, and deployed. Starting from the monolithic architecture, where all components of the software were unified in a single application, the increasing demands and complexity of software required new solutions [1]. This approach was sufficient for standalone, self-sustaining computer systems, but the development of large-scale software systems required software capable of meeting new demands. Thus, this new requirement became the cornerstone for the development of service-oriented architecture (SOA). SOA emphasized services as independent units of functionality that communicate over a network [2, 3]. While previously mentioned design SOA was succeeded with other architectural approaches, it again remerged with the development of mobile applications [4]. This paved the way for the development of microservice architecture, where software applications were composed of small, independent services. Each developed service solved a specific demand [5]. Another important point of interest is APIs, or application programming interfaces, which have been around almost as long as modern computing. They emerged decades ago to enable communication between disparate software applications. Based on them, software engineers developed the API-first approach, which prioritizes APIs at the beginning of the software development process, positioning APIs as the building blocks of software. API-first organizations develop APIs before writing other code instead of treating them as afterthoughts. This allows teams to construct applications with internal and external services that are delivered through APIs [6; 7]. Cloud native is the software approach of building, deploying, and managing modern applications in cloud computing environments. Modern companies want to build highly scalable, flexible, and resilient applications that they can update quickly to meet customer demands [8]. To do so, they use modern tools and techniques that inherently support application development on cloud infrastructure. These cloud-native technologies support fast and frequent changes to applications without impacting service delivery, providing adopters with an innovative, competitive advantage [9]. The final piece of modern architectural approaches is headless software. The main reason for the development of this software was to decouple the user interface (UI) from the back-end services. As such, headless software runs without a graphical user interface (GUI). The GUI is the part of the software that the user interacts with, so a headless application may not always include a way for the user to directly input data or view results [10]. All this led to one of the most transformative developments in recent years, the microservices, API-first, cloud-native, and headless (MACH) architecture, which combines all previous architecture approaches for highly flexible, scalable, and efficient software systems. By decoupling the frontend from backend services and enabling microservices to operate independently, MACH architecture facilitates the development of modular systems that can rapidly adapt to changing business needs. In parallel, agile frameworks emerged as a dominant methodology for managing software development. An agile iterative and flexible approach is well-suited to addressing the complexities inherent in modern software architecture, particularly in educational settings [11]. The integration of agile frameworks in academic curricula has shown the enhancement of student engagement, fosters hands-on learning, and better prepares students for the dynamic requirements of the software industry [12; 13]. By breaking down complex tasks into manageable sprints, students can iteratively develop and refine their skills in real-world problem-solving environments. This research aimed to explore the intersection of MACH architecture and agile methodologies in an educational context.