Design a progressive web application to support student learning Svitlana O. Leshchuk1 , Yurii S. Ramskyi2 , Anastasia V. Kotyk1 and Serhiy V. Kutsiy1 1 Ternopil Volodymyr Hnatiuk National Pedagogical University, 2 Maxyma Kryvonosa Str., Ternopil, 46027, Ukraine 2 National Pedagogical Dragomanov University, 9 Pyrogova Str., Kyiv, 01601, Ukraine Abstract The role of progressive web applications in students’ educational activities is researched in the work. Authors compare them with applied and hybrid programs; determine the features of PWA technology as well as analyze the architecture of progressive web applications. The study aim is to develop and implement the progressive web application that is an information portal of the Faculty of Physics and Mathematics Ternopil Volodymyr Hnatiuk National Pedagogical University using PWA technology. To achieve this goal, the following required resources for the’ training organization of student’s activities have been selected. They are the schedule of the educational process, lessons schedule, schedule of mod- ular and final controls, information on practice, schedule of final exams, regulatory and methodological software. On the first stages of work a website template was created in addition to information gathering. The next stages of practical implementation were aimed at the development of logic and implementation of PWA technology, namely defining the interface, adding a worker, creating auxiliary functions. The final stage of the study is the project deployment. The results obtained by the author can be used in the process of higher specialists training in educational institutions. The web application itself is practical for organizing students’ educational activities. Keywords progressive web application, web-programming, future computer science teacher, information portal, organization of educational activities 1. Introduction Technological innovations always affect how goods and services are developed. In recent years, there has been an increase in Internet services [1]. This is due to the introduction of new and improvement of existing technologies. Things that were previously impossible now exist. The application of technology can be traced in all areas such as business, education, science, health, agriculture. Today, business perceives the Internet as a business platform and requires constant scaling. CS&SE@SW 2021: 4th Workshop for Young Scientists in Computer Science & Software Engineering, December 18, 2021, Kryvyi Rih, Ukraine " leshchuk_so@fizmat.tnpu.edu.ua (S. O. Leshchuk); y.s.ramsky@npu.edu.ua (Y. S. Ramskyi); kotyk_av@fizmat.tnpu.edu.ua (A. V. Kotyk); kutsyj_sv@fizmat.tnpu.edu.ua (S. V. Kutsiy) ~ https://tnpu.edu.ua/faculty/fizmat/leshchuuk_so.php (S. O. Leshchuk); https://ramsky.fi.npu.edu.ua/ (Y. S. Ramskyi)  0000-0001-6600-7940 (S. O. Leshchuk); 0000-0002-3121-7005 (Y. S. Ramskyi); 0000-0002-8427-5532 (A. V. Kotyk); 0000-0002-8427-5532 (S. V. Kutsiy) © 2022 Copyright for this paper by its authors. Use permitted under Creative Commons License Attribution 4.0 International (CC BY 4.0). CEUR Workshop Proceedings http://ceur-ws.org ISSN 1613-0073 CEUR Workshop Proceedings (CEUR-WS.org) 83 Therefore, there is a need for fast and reliable applications, including for mobile phones. The rapidly growing market of mobile devices has set a need for applications being available at anytime, anywhere, and on any device. Although this evolution provides users an unprecedented freedom, developers are facing the challenges caused by mobile device fragmentation [2]. Current application development solutions are insufficiently optimized for the high diversity of mobile platforms and hardware characteristics. After solving these problems, it remains relevant a need for fast and reliable web applications. One such web technology is the Progressive Web App (PWA). It transforms the site into an application. If you delve into its architecture, the developer is offered technologies (Service Worker, Push Notifications, WebApp manifest, HTTPS, App shell) and outlines goals (Reliable, Fast, Engaging). Since PWA has no limitations like traditional applications, they can be as advanced as possible and can run on all possible operating systems. We can teach this to students today. Designing a mobile-oriented environment for professional and practical training requires determining the stable (fundamental) and mobile (technological) components of its content and determining the appropriate model for specialist training. In work [3] it has been established that the fundamental core of software engineers’ training should ensure that students achieve such leading learning outcomes: to know and put into practice the fundamental concepts, paradigms and basic principles of the functioning of language, instrumental and computational tools for software engineering; know and apply the appropriate mathematical concepts, domain methods, system and object-oriented analysis and mathematical modeling for software development; put into practice the software tools for domain analysis, design, testing, visualization, measurement and documentation of software. Thus, there is a need for fast and reliable web applications. One such web technology is the Progressive Web App (PWA). It transforms the site into an application. If you delve into its architecture, the developer is offered technologies (Service Worker, Push Notifications, Web App manifest, HTTPS, App shell) and outlines goals (Reliable, Fast, Engaging). Since PWA has no limitations like traditional applications, they can be as advanced as possible and can run on all possible operating systems. Therefore, consider this area of research relevant. 2. The research apparatus This work is a research project on a progressive web application. The main goal was to evaluate and implement advanced technologies for creating a web application. The project is implemented by studying the theoretical foundations and developing a prototype PWA web application. The React and React Material web components were used to create the user interface. Web App Manifest, Service Worker, App Shell, and Web Push Notification have been implemented to keep the application running offline, increasing its download speed on slow networks. The purpose of this work is to introduce a progressive web application in the activities of students of the Physics and Mathematics Faculty of Ternopil Volodymyr Hnatiuk National Pedagogical University [4]. The study took place over several stages. 1. Development of a site template. 2. Collection of necessary information about the work of the faculty. 3. Development of the logic of the application. 84 4. Development of the PWA application (mobile and desktop versions). 5. Project deployment The object of research is the technology of creating advanced web applications. The subject of research is a progressive web application as a means of implementing educational interaction. To achieve this goal, we used a set of research methods such as analysis of scientific and technical literature, generalization, modeling of information processes, observation, analysis of experience in the use of PWA technology, software development and testing. The approbation of the research was carried out within the activity of the STEM-center of the Physics and Mathematics Faculty of Ternopil Volodymyr Hnatiuk National Pedagogical University, in particular in the educational process. 3. Research results The role of progressive web applications in students’ educational activity is considered in the work. A significant role is devoted to the comparison of this technology with applied and hybrid programs. The features of PWA technology are also studied, the architecture of advanced web applications is analyzed. 3.1. Analysis of the basic concepts of the study To understand what Progressive Web Apps (PWA) is, it is enough to imagine that a site interacts with the user as an application. The user can install it on any gadget, receive messages and work with it. And the work can continue even offline. This application model offers combine the features of modern browsers and the benefits of mobile applications. Progressive Web App is a hybrid of a site and an application. Progressive web applications give the user access to information in one click. The involvement of the resource increases, because the client can quickly visit the resource at any convenient time. At the same time, PWAs are able to run on almost all hardware platforms, which reduces the cost of development: you do not need to create a separate product for each operating system, just develop one universal PWA-application. Progressive mobile applications demonstrate good behavioral factors. This is because users actively navigate the pages and receive lower bounce rates. This has a positive effect on the ranking of the site in search. PWA only works with the HTTPS protocol, which also improves the security of the site. In terms of User Experience (UX), PWA also has advantages. With the progressive web application, the user can enjoy not only browsing, searching and downloading resources, but also the time saved and nerves saved. Such solutions are especially interesting in terms of Ukrainian realities, where 3G / 4G coverage is not so ideal. However, Progressive Web Apps cannot completely replace mobile applications, because the native mobile application still has more features. However, in many cases, the PWA site is becoming a cheaper alternative to mobile applications. The advantages of PWA include: • PWAs are small in size due to the fact that they effectively use the capabilities of the browser; 85 Table 1 Comparison of progressive and mobile applications. Features PWA Mobile Application Instant installation + - Higher development speed + - The device takes up less memory + - Low development cost + - Cheaper to develop and maintain + - Interaction with a microphone and a smartphone camera + - Use of functions of access to proximity sensors, bluetooth, etc. - + No need for stores to distribute them + - Table 2 Comparison of progressive applications and sites. Features PWA Site Higher download speed + - Work offline + - Faster and easier access + - Push notifications + - More user-friendly interface + - Support for many browsers + - • faster in development; • in progressive applications it is easier to edit content (you do not need to edit content separately in the application and separately on the site); • it is easier to use a PWA site, which increases the SEO indicators of the site. Some features of progressive and mobile applications are shown in the tables 1, 2. PWA’s popularity is growing very fast in the field of e-commerce, business, Internet portals, and other industries due to these characteristics [5]. Creating advanced web applications that meet all the requirements based on performance, availability, adherence to best practices and SEO is quite a challenge. To do this, all PWA components, such as Service Worker, Web App Manifest, Application Shell model, and Web Push notifications, must be implemented with great care and testing. 3.2. Set of selected technologies • React. It was used in this project to display the results of the components, as well as through the convenience of creating new projects using the utility react-create-app, which provides all the necessary tools to the developer right of the box. Any data is passed to the components using props, in the component they are already processed in order to render the result. Another important advantage is the ability to use states. That is, it is data that can change asynchronously depending on the user‘s actions. For example, a user 86 entering data into a form text box can update the date in the components via setState(), or data coming from API can update the input field value asynchronously, so there is no need to reload the browser page to see new data, and the user always will see the latest version of the site. • React-Router. In the developed program, as well as in any typical website, routing is used. There is no special choice here, because react-router is probably the only popular solution available. The router allows you to easily and flexibly control the display of the application depending on the route in the browser, redirect the user to other routes and block unwanted transitions. • Webpack. It was decided to use Webpack to build the applications. This is the most powerful and popular solution at the moment. From scratch, setting up an assembly can take a decent amount of time, so it was decided to use npx create-react-app, which allows you to deploy a ready-to-develop application environment. When a webpack processes an application, it internally creates a dependency graph that display each module that the project needs and generates one or more package. The entry point indicates which web package of the module should be used to build an internal dependency graph. Webpack will find out which other modules and libraries this entry point depends on (directly and indirectly). The output property tells the webpack where to place the created sets and how to name these files. By default, the path will be in ./dist/main.js for the main source file and the ./dist folder for any other created file. By default, the web package only understands JavaScript and JSON files. Downloaders allow the webpack to process other types of files and convert them into active modules that can be used by the application and added to the dependency graph. Although loaders are used to convert certain types of modules, plug-ins can be used to perform a wider range of tasks, such as package optimization, asset management, and the introduction of environment variables. To use the plugin, you need to call the require() command with the name of the plugin and add it to the plugin array. Most plugins can be customized with options. Because the plugin can be used multiple times in the configuration for different purposes, you need to instantiate it by calling it with the new operator. You also need to set the development mode parameter, one of: development, production, or none. This way, the webpack will enable built-in web package optimizations that are appropriate for each environment. The default value is production. Webpack runs on Node.js version 8.x or newer. • Git. It was used as the version control system. The git process is shown in the figure 1. Before you start, you need to initialize git by calling the git init command. This command will create a .git directory where it was called. The git add command is used to add new files. The next step is to call the git commit command, which creates a committee in the current branch with the entered message, as well as files that are in the stack. • PhpStorm development environment PhpStorm is an intelligent editor for PHP, HTML and JavaScript with the ability to analyze code on the fly, prevent errors in raw code and automated refactoring tools for PHP and JavaScript. The autocomplete code in PhpStorm supports the PHP 5.3 / 5.4 / 5.5 / 5.6 / 7.0 / 7.1 specification (modern and traditional 87 Figure 1: Scheme of work Git. designs), including generators, coroutines, namespaces, locks, types, and short array syntax. There is a full-fledged SQL-editor with the ability to edit the results of queries [6]. PhpStorm is based on the IntelliJ IDEA platform, written in Java. Users can extend the functionality of the development environment by installing plug-ins designed for the IntelliJ platform or by writing their own plug-ins. All WebStorm functionality is included in PhpStorm. PhpStorm is ideal for working with Symfony, Drupal, WordPress, Zend Framework, Laravel, Magento, Joomla, CakePHP, Yii and other frameworks. PhpStorm deeply analyzes the structure of the code, supporting all the features of the PHP language in both new and legacy projects. The editor supports code auto-completion and refactoring, prevents errors on the fly. PhpStorm has the ability to work with the most modern technologies: HTML5, CSS, Sass, Less, Stylus, CoffeeScript, TypeScript, Emmet and JavaScript. Refactoring, debugging and unit testing will be available. Thanks to the Live Edit function, all changes can be viewed immediately in the browser. It is convenient to perform monotonous tasks directly in PhpStorm. IDE is integrated with version control systems, supports remote deployment, databases and SQL, command line tools, Docker, Composer, REST client and many other tools. PhpStorm includes all WebStorm functionality, as well as full support for PHP, databases and SQL. PhpStorm takes care of the quality of the code with the help of hundreds of inspections, which check the code on the fly and analyze the whole project. PHPDoc support, a formatting tool, quick fixes, and other features help developers write neat code that is easy to maintain. 88 PhpStorm securely converts code by reliably refactoring renaming, moving and deleting, extracting methods, entering changes, moving items up or down, changing signatures, and more. Refactoring that takes into account the specifics of a particular language will help to apply changes throughout the project in a couple of clicks. In this case, any transformation can be canceled. 3.3. Creating an information portal FIZMAT PWA development is based on a stack of selected technologies for this project. It should be added that you can create a PWA without additional frameworks or libraries. To begin with, HTML and Javascript are enough. The first stage was the deployment of the project infrastructure, and the git version control system was initialized. All packages used in the web program are at the root of the project in the package.json file (figure 2). Figure 2: Packages used in development. To initialize the git version control system, the git init command is called, which creates a new repository in the current folder. The .git folder contains all the information needed for the project in version control, and all the information about the commit, the address of the remote repository, and so on. They are all present in .git folder. It also contains a journal that preserves the history of the committees. Creating React Components. Components are independent and reusable bits of code. They perform the same goals as JavaScript functions, but work in isolation and return HTML through a rendering function. There are two types of components, class components and function compo- 89 nents, this project uses class components. When you create a React component, the component name must begin with a capital letter. The component must include the React.Component extends statement, which creates a descendant from React.Component and gives the component access to the React.Component functions. The component also requires the initialization of the render() method in the class, this method returns HTML (figure 3). Figure 3: Class schedule component of training. The submitted component is passed to another component of the library react-router . Website resources are stylized in the App.css file. Also connected are fontawesome icons by a separate npm package. Components are rendered to reflect the resources of the Faculty of Physics and Mathematics, such as a component that displays a graph of modular and final controls (figure 4). The next step is to test the progressive web application offline (figure 5). 3.4. Practical implementation of the model Stage 1. Creating a site template. The first step is to create an index.html file. Which will be the main template of the site, which connects all the other necessary resources, such as: styles, scripts, manifest file, the necessary images to install the website on the user’s device. Also in this file the entry point for the created 90 Figure 4: Component of the schedule of modular and final controls. progressive web application is defined, as an element in which the virtual DOM created by React components will be rendered there will be a div element with the root identifier. The index.html template checks for the presence of a web worker in the browser, if the browser supports PWA technology, the worker is registered in the browser by specifying the path to the file in which it is defined. Stage 2. Collection of information. The web application is designed for students of the Faculty of Physics and Mathematics, so the information provided in it will be useful, especially for physicists. The application provides all the necessary information: • schedule of the educational process; • schedule of classes for full-time and part-time education; • schedule of modular and final controls; • information about the practice; • schedule of final certification; • normative and methodological support; • schedule of individual classes; • schedule of liquidation of academic debt; 91 Figure 5: The homepage of the web application is offline. • disciplines of choice. Stage 3. Development of logic. The use of selected technologies allows the developer to build the architecture of the applica- tion following the already defined rules of writing code and the correct structuring of the file hierarchy in the project. All pages on the site are available at a specific link. Since the routing is on the client side, a react-router library was used, which intercepts all transitions on the site, calling the desired component for each of the links. React supports the component approach in programming, so all pages on the site are components that are passed to the appropriate as component properties. A component is a class that is inherited from React.Component, which initializes all the properties and states required to run the component. In the constructor of a class the transferred properties as props, and also public properties of a class which are necessary for correct display of contents rise to the parent class. In the render class method, all file paths are defined, depending on the state of the user’s network, and a template is returned with the data ready to be displayed in the user’s browser. Stage 4. Introduction of PWA technology. The first step in implementing PWA technology was to add the manifest.json file. The web application manifest is a JSON file that defines the PWA interface. It determines how you download and display progressive web applications, as well as your own application from the application store. The manifests of this web application include: the name of the program, description, style, theme, icons, the initial path when opening it on the device, and a list of necessary resources. Unlike regular bookmark-only web applications, PWAs can use regular web APIs and be installed on the device home screen. The successor korok needs to create a worker file, and also to connect yo-go on a site in a 92 root template. The file, according to the recommendations of google developers, creators of this technology, is called service-worker.js. It is placed in the public folder on the same level with the manifest file. This file specifies the path from where to start caching files, in this case the root of the site was selected so that all files are stored in the browser cache and the cache version is specified to identify its different versions. The handler added handlers for events that come from the browser, these are: install, activate, fetch. The install event is a standard event in which the worker is prepared for work. For example, creating a cache using the built-in API saves the necessary resources that are needed to run offline. Activate event — the handler of this event clears outdated cache and other things related to the previous version of the service employee, ie the file service-worker.js. Fetch event – is triggered when a user, in this case a browser, or a device, sends a request to obtain a specific resource. The handler works to retrieve the resources stored in the cache and send the requested data to the client using the respondWith event method. Each resource in the cache is stored with the name of the generated hash, so the resources cannot be duplicated in memory. To work with hashed files, auxiliary functions were created: removeHash, hasHash, hasSameHash. Stage 5. Project deployment. As a hosting for the project, the Firebase platform was used. Hosting Firebase provides fast and secure hosting for hosted web applications, static and dynamic content and microservices. You must first install the developer tools to call the Firebase features from the console. Tools are installed using the npm install firebase-tools-g command. The next step is to log in to the Firebase platform, such authentication is performed using the firebase login command, where you need to enter your email address and password from the account. After successful user authentication, you need to initialize the project by calling the firebase init command. During the initialization process, you will be prompted to configure the project upload process to the host. You must specify a folder that contains the static resources used by the web application. After the initialization of the process of uploading files to the host, Firebase will create files: .firebaserc, firebase.json. These files are automatically generated when you need to make a commit and upload the last commit to the host, so that locally the developer and the host had consistent data of the web application. The developed web application is available at: https://new-info-fizmat.web.app/ 3.5. Experimental study Usually, the experiment is carried out as part of scientific research and serves to test the hypothesis, to establish causal links between phenomena. In a passive experiment, information about the object under study is accumulated by passive observation, ie information is obtained in the normal functioning of the object. The results of the experimental study we obtained by analyzing the questionnaire. The aim of the questionnaire was determination of efficiency of the use of informative portal physical Faculty of Mathematics using PWA technology. Among the questions: research of requirements in such web applications, comfort of establishment and use, selection of content, design.Informative materials for organization of educational activity of students can be found 93 Figure 6: The level of interest of respondents. and on the web-site of university.But exactly optimization of access to them induced this research.In his experimental part we compare traditional access to these resources with the use of worked out to web-addition of PWA. We present the processing of the results of twenty-seven respondents (figure 6). The content of the information portal received the highest marks (23% – “4” out of “5”, 74% – “5”). We received more than 95% of positive feedback on the block of questions regarding the design of the interface and design. It should be added that the design is subject to change and does not require significant changes to the code, its structure, or logic. An important result is that most respondents were able to install a website on their device (figure 7): Figure 7: Evaluate the installation of a web application on the device. The question regarding the recommendation of the web relationship received a 100% positive answer. This indicates that students need a quick and easy application that does not need to be downloaded and installed on a device that will have all the information they need. As a result, 94 we received mostly positive results from respondents. This allows us to talk about a sufficient level of demand for websites of this type and its quality development (figure 8). Figure 8: Assessment of the overall impression of use. 4. Conclusions This work was performed as a research project on a progressive web application. The main goal was to evaluate and implement advanced technologies in the application. This study was conducted by studying the relevant theory and developing a prototype PWA web application. The React and React Material web components were used for the user interface, while Web App Manifest, Service Worker, App Shell and Web Push Notification were implemented to make the program work offline, load quickly even on unstable networks and send the appropriate push notifications as a native application. The study demonstrates how PWA combines the best practices of websites and applications. In addition, it also demonstrates some of the challenges that PWA faces in today’s information technology environment, and that PWA is still in its infancy. Meanwhile, Google is actively developing this technology and working hard to provide and support tutorials. Thus, with growing browser and platform support, PWA may be the future of mobile Internet. Collection of technical information for development of PWA of applications can be used for organization of similar projects and studies of students of technological profiles. A research and practice result is development of progressive web application as to the means of realization of educational co-operation. After conducting a theoretical study, implementing the developed web application (filling it with information materials), and evaluating the effectiveness of its application, we can conclude that the purpose of the work – the introduction of a progressive web application in the activities of students of the Faculty of Physics and Mathematics of Ternopil Volodymyr Hnatiuk National Pedagogical University achieved. 95 References [1] Y. Ramsky, O. Rezina, Study of Information Search Systems of the Internet, in: R. T. Mittermeir (Ed.), From Computer Literacy to Informatics Fundamentals, Springer Berlin Heidelberg, Berlin, Heidelberg, 2005, pp. 84–91. doi:10.1007/978-3-540-31958-0_11. [2] H. Desruelle, D. Blomme, F. Gielen, Adaptive mobile web applications: A quantitative evaluation approach, Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) 6757 LNCS (2011) 375–378. doi:10.1007/978-3-642-22233-7_29. [3] A. M. Striuk, S. O. Semerikov, The dawn of software engineering education, CEUR Workshop Proceedings 2546 (2019) 35–57. URL: http://ceur-ws.org/Vol-2546/paper02.pdf. [4] P. Turansky, S. Leshchuk, Creation of modern web applications using PWA technology, in: Modern information technologies and innovative teaching methods: experience, trends, prospects, 2020. URL: http://dspace.tnpu.edu.ua/handle/123456789/16990. [5] Add a web app manifest, 2021. URL: https://developers.google.com/web/fundamentals/ web-app-manifest/. [6] PhpStorm. The Lightning-Smart PHP IDE, 2021. URL: https://www.jetbrains.com/phpstorm/. 96