<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Designing a cross-platform user-friendly transport company application</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Maksym Y. Salohub</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Olena H. Rybalchenko</string-name>
          <email>rybalchenko@knu.edu.ua</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Svitlana V. Bilashenko</string-name>
          <email>bilashenko.s@knu.edu.ua</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Kryvyi Rih National University</institution>
          ,
          <addr-line>11 Vitalii Matusevych Str., Kryvyi Rih, 50027</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <fpage>75</fpage>
      <lpage>85</lpage>
      <abstract>
        <p>This paper delves into the pivotal role of cross-platform development and the significance of user experience (UX) and user interface (UI) research in the creation of an application for a transportation company. User experience involves studying user behaviors, preferences and interactions, while user interface focuses on the design elements that facilitate these interactions. The research methodology includes a user experience research, including a user survey and analysis of analogous applications. The findings from this study are instrumental in researching the visual aspect of the application, aiding in the identification of design solutions and the creation of interface layouts. The paper analyzes technologies that facilitate cross-platform development. By drawing conclusions from the user experience research, interface design development and an examination of cross-platform development tools, the study culminates in the development of a convenient and scalable application tailored for both users and drivers of the transportation service.</p>
      </abstract>
      <kwd-group>
        <kwd>cross-platform application</kwd>
        <kwd>software</kwd>
        <kwd>React Native</kwd>
        <kwd>mobile</kwd>
        <kwd>transport</kwd>
        <kwd>interface</kwd>
        <kwd>UI/UX</kwd>
        <kwd>nativity</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>In the era of information technology and digitalization of all spheres of life, an important aspect
of business is the availability of proprietary software. Achieving cross-platform applications
can be done in two ways: using native approaches for each platform or employing technologies
for a unified code base. A single code base reduces development costs and enables smaller
companies to aford cross-platform applications, increasing demand.</p>
      <p>For transportation companies, the ability to ofer apps is usually limited to industry giants,
leaving smaller regional providers with fewer options. Therefore, exploring the creation of
afordable cross-platform applications is crucial for the modern market.</p>
      <p>Given the active interaction between transportation services, users, and drivers, conducting
user experience research and user interface analysis is essential. This ensures the development
of a modern, high-quality design that is minimalistic and non-distracting for drivers. Addressing
UI/UX aspects before full development is crucial to optimize resources and enhance the overall
application experience.</p>
      <p>
        Another problem with cross-platform development can be that it is dificult to adhere to a
single style, because some tools can cause a conflict while displaying interface elements on
diferent platforms. Therefore, after creating a full-fledged design system, it is necessary to select
elements that may cause a display conflict and make them custom so that the systems generate
them instead of taking them from the ready-made tools. Thus, the developed application will
be ready to be deployed to the AppStore and PlayMarket without any problems with platform
compatibility [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
    </sec>
    <sec id="sec-2">
      <title>2. Researching approaches to cross-platform development</title>
      <p>
        The principle of a cross-platform application is generally to use a single code base that can be
executed on any platform without significant modifications or without any modifications at all.
However, cross-platform is a complex thing to implement and has several options for creating
it [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
      <p>
        Some applications use compilation to native code, which allows the application to run as
native on a particular platform. Native elements are those that are unique to a particular
development platform, even though they have the same name. So, a button on two platforms is
still a button, but it may look diferent. But applications that create the so-called "bridge" can
interact with both their own program code and the program code of the platform environment
on which they were launched [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>Some applications use web technologies to display the application. Thus, the use of
frameworks in software systems whose work is based on creating mappings in the web environment
allows the application to avoid cases of diferent interface appearance when running on
different platforms. The advantage of such systems is that only one developer who has created a
responsive website is enough. But for the average user, such applications have a huge drawback:
they must always load a web page and therefore are limited to working only on devices that
have stable Internet access and a built-in browser.</p>
      <p>It is also possible to distinguish the way the program works when it does not have access to
the native elements of the platform. Such applications use their own graphics tools, thus gaining
access to the device’s GPU. They use it to display the same interface elements regardless of the
platform. But, like every other type of cross-platform application, they have their drawbacks,
which in certain situations can be quite significant for the user. For example, they put more
strain on weaker devices.</p>
      <p>
        The larger the city and the more places where tourists visit – the more the application must
support a large number of requests to the network. Therefore, it is extremely important to
design high-quality work with network requests for both iOS and Android systems [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. UX research</title>
      <p>
        The UX research was divided into two parts: competitor analysis and target audience analysis
using a questionnaire [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. To analyze analogs, was selected the applications that also use
crossplatform technologies. These are applications from Bolt, Grab and Didi Rider. The analysis
results were obtained according to visual analysis and analysis of users reviews (table 1).
      </p>
      <p>
        The next step of UX research is to survey users. The most convenient way to do this is to use
Google Forms with a set of questions [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. At this stage, 30 people were interviewed and the
results of the survey were compiled. For a simpler understanding of the results, separate charts
and tables were created for the most important points of the survey. Thus, the most voluminous,
but important chart was the chart of the type of people who use the app.
      </p>
      <p>Next, the most important part of the survey is which app features are important to users.
Thus, for further work, it becomes possible to easily identify the main functionality that is
really relevant for the modern market of transport companies. The results from the chart were
transformed into a table for easier data processing (table 2).</p>
      <sec id="sec-3-1">
        <title>Question</title>
      </sec>
      <sec id="sec-3-2">
        <title>Count Percentage</title>
        <p>Driver choosing availiability
Showing driver photo while choosing driver
Automatic drivers filtration by geolocation
Chat with driver only when active trip
Ending of trip when user and driver agreement both
Panic button
Trips archive
Trip review
The ability for drivers to take orders at any free time
The function of confirming the arrival of a taxi only with my permission
16
19
23
10
13
23
17
20
1
1
53.3%
63.3%
76.7%
33.3%
43.3%
76.7%
56.7%
66.7%
3.3%
3.3%</p>
        <p>According to this chart, the two most important features for users are the presence of a panic
button during the trip to ensure their safety and automatic filtering of drivers by trip details
(for example, by selecting the “with child” tag for a trip, drivers without a child seat will not
even see this order). As slightly less important features, respondents noted the ability to rate
a ride, see a driver’s photo when choosing a driver, the ability to choose a driver and save a
ride history. Also, almost 43.3% of users consider it necessary to be able to end the ride only
upon their confirmation, so the driver cannot disable the transportation on his/her own. The
least important features are the activity of chatting with the driver only during the trip itself,
the ability for drivers to take orders at any free time and one answer was added by the user
personally, which sounds like “the function of confirming the arrival of a taxi only with my
permission”. Thus, the most basic needs of application users in terms of functionality that need
to be implemented first was identified.</p>
        <p>Equally important is not only the implementation of the functionality, but also what exactly
will be displayed on the screen with a higher priority. To determine this, the question “what is
paid attention to when choosing a transport” was separately highlighted and a diagram was
created based on the answers. The results of diagram were transformed into a table (table 3).</p>
        <p>Let’s summarize the results of the UX research. The app’s users are active citizens who value
their time and comfort. They use smartphones with internet access, which makes them ideal
users. They also have diferent socio-economic statuses, including students, ofice workers,
entrepreneurs, tourists and drivers looking for additional income.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. UI analysis, creating interface prototypes and design system</title>
      <p>
        The development of the UI part of the application can also be divided into several parts – creating
low-detail mockups (wireframing), graphic design and designing full-fledged design mockups.
Wireframing helps to visualize the concept of the application and provides an opportunity to
quickly check and improve the structure of the product before moving on to more detailed
design and development. After low-detail prototypes are created, they are refined into highly
detailed mockups, where colors, textures, graphics and other elements are added to increase the
level of detail and prepare the mockup for use by the developer when building the app [
        <xref ref-type="bibr" rid="ref7 ref8">7, 8</xref>
        ].
      </p>
      <p>First, was created a prototype of the login screen, because this is the first thing the user sees,
but it is more important to consider the next screen after the login. This is the home page screen.
It is divided into two versions, because the user can be either a passenger or a driver. Since they
are still quite similar, let’s take a look at the passenger screen (figure 1).</p>
      <p>It was also useful to create a prototype of the profile screen to understand the information
architecture of the application (figure 2).</p>
      <p>These were all examples of creating low-detail interface layouts. Their task is to structure
the data on navigation in the application and the general arrangement of elements.</p>
      <p>The next stage of UI modeling is graphic design. When the information architecture of the
application is already known, it becomes important to select the right icons that will fully
express the semantic meaning that was embedded in them. That’s why status icons were
identified as part of the design system (figure 3).</p>
      <p>As you can see, some of these icons are also colored – this is necessary to further emphasize
to the user what exactly has happened in the application at the moment. Thus, additional
semantic coloring is provided for the images.</p>
      <p>So, when the low-detail mockups and the graphic part of the design are ready, you can move
on to developing high-detail mockups. Since, according to the results of the UX analysis, it
is clear that the users of the application are a wide range of people, a blue was chosen as the
main color. It is associated with calmness and reliability, which is essential for a transportation
company (figure 4, 5).</p>
      <p>A grouping of screens based on a specific set of functionality is called a flow. For example,
this is how a chat flow looks like (figure 6).</p>
      <p>As a result of the work, we have a completely ready-made design system that can be used for
software development, knowing that it will be useful and convenient for each user.</p>
    </sec>
    <sec id="sec-5">
      <title>5. System development</title>
      <p>To implement the application, JavaScript was chosen to avoid switching between languages
when creating diferent parts of the project. Thus, the Express.js framework is used for the
backend part and React Native is used for the application itself.</p>
      <p>
        React Native is used to develop mobile applications. The main advantage of React Native is
that this technology allows you to write code once and then use it to create applications for
both iOS and Android. This significantly reduces the development time and eliminates the need
to write two separate programs for diferent platforms [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <p>
        Express.js is used to develop the server side of the system. It is a flexible and powerful
framework that allows you to easily create web applications and APIs. Express.js integrates
well with MongoDB and other technologies used in the project [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>
        Another feature of the project is the use of Expo CLI. One of the most important features
of Expo is the ability to develop mobile applications on the React Native platform. With Expo,
you can easily build, test and publish your React Native apps without having to set up complex
development tool configurations. Testing is done by scanning a QR code from the IDE terminal
(figure 7) [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>
        This project uses MongoDB to store data. It is one of the most popular NoSQL database
management systems. MongoDB is a document-oriented database that uses a JSON-like structure
to store data rather than working with tables in the usual sense of databases. Features of
MongoDB include data structure flexibility, high performance, horizontal scaling and the ability
to work with large amounts of data. The database is created using MongoDB Atlas, a MongoDB
cloud service [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ].
      </p>
      <p>A special collection of icons called Feather Icon was used in the application. With the help of
this service, a collection of icons was created that are used to improve the semantic interaction
of users with the application. React Native technology does not support easy interaction with
SVG icons. But this is necessary, because only this image format scales to any screen size
without changing the quality. Therefore, to display such icons in the application, additional
libraries react-native-svg and react-native-feather are used. This way, a contact is established
between the application and the cloud service, which is the repository of the necessary icons in
SVG format.</p>
      <p>There is a separate algorithm for saving images on the server. Due to the use of MongoDb, it
was decided to encode the images transferred to the server in base64 using the multer auxiliary
library.</p>
      <p>The basic encryption code looks like this:
const multer = require(’multer’);
const storage = multer.diskStorage({
destination: function (req, file, cb) {</p>
      <p>cb(null, ’./uploads/’);
},
filename: function (req, file, cb) {</p>
      <p>cb(null, new Date().toISOString() + file.originalname);
},
});
const upload = multer({ storage: storage });
module.exports = upload;</p>
      <p>The code of the auxiliary file used for intermediate image encoding looks like this:
const multer = require(’multer’);
const storage = multer.memoryStorage();
const upload = multer({
storage: storage,
limits: {</p>
      <p>fileSize: 1024 * 1024 * 2,
},
});
module.exports = upload.single(’image’);</p>
      <p>It is important to note that this file size was not chosen by chance. It was important to save as
much space as possible in the database without loading the server with long image processing.
Therefore, the image will be successfully saved only if its size is 1024*1024 or less. At the same
time, the maximum image size is limited to 2 MB.</p>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusions</title>
      <p>This project was a fascinating challenge that allowed us to delve deeper into the world of
developing and researching the benefits of cross-platform applications for transportation companies.
One of the key points of focus was to create an application that not only meets the needs of
users, but also has a convenient and eficient interface for both parties – both passengers and
drivers.</p>
      <p>A number of technologies were used to achieve this goal. React Native allowed us to eficiently
implement the visual particle, ensuring its cross-platform compatibility. Express.js was used to
create a powerful backend and MongoDb served as a reliable database.</p>
      <p>Analysing of the subject area, was identified the main problems of interaction between
passengers and drivers. This insight allowed us to clearly define the project’s goals and objectives,
focusing our eforts on solving specific problems.</p>
      <p>Target audience research confirmed that drivers and passengers using modern mobile
technologies are the main users of the app. The results of the survey emphasized the high demand
for such services, which became the basis for further improvement of the app.</p>
      <p>Overall, this project not only demonstrated the efectiveness of using modern development
methodologies and tools, but also emphasized the flexibility and adaptability of the application to
changes in the passenger transportation market. The result is a high-quality mobile application
that is ready to quickly adapt to any conditions and user requirements.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>N. V.</given-names>
            <surname>Ichanska</surname>
          </string-name>
          ,
          <string-name>
            <surname>S. I. Ulko</surname>
          </string-name>
          ,
          <article-title>Osnovni aspekty stvorennia mobilnykh dodatkiv ta vybir instrumentiv yikh rozrobky [The main aspects of creating mobile applications and the choice of tools for their development], Systemi upravlinnia</article-title>
          ,
          <source>navigatsii ta zv'iazku 59</source>
          (
          <year>2020</year>
          )
          <fpage>74</fpage>
          -
          <lpage>78</lpage>
          . doi:
          <volume>10</volume>
          .26906/SUNZ.
          <year>2020</year>
          .
          <volume>1</volume>
          .074.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M.</given-names>
            <surname>Martinez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Lecomte</surname>
          </string-name>
          ,
          <article-title>Towards the quality improvement of cross-platform mobile applications</article-title>
          ,
          <year>2017</year>
          . URL: http://arxiv.org/abs/1701.06767.
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>B.</given-names>
            <surname>Eisenman</surname>
          </string-name>
          , Learning React Native:
          <article-title>Building Native Mobile Apps with JavaScript</article-title>
          , 2nd ed.,
          <string-name>
            <surname>O'Reilly Media</surname>
          </string-name>
          , Inc.,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>A.</given-names>
            <surname>Noulas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Salnikov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Hristova</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Mascolo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Lambiotte</surname>
          </string-name>
          ,
          <article-title>Developing and Deploying a Taxi Price Comparison Mobile App in the Wild: Insights and</article-title>
          <string-name>
            <surname>Challenges</surname>
          </string-name>
          ,
          <year>2017</year>
          . URL: http://arxiv.org/abs/1701.04208.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>R. L.</given-names>
            <surname>Veal</surname>
          </string-name>
          , How to Conduct
          <source>User Experience Research Like a Professional</source>
          ,
          <year>2021</year>
          . URL: https://careerfoundry.com/en/blog/ux-design/
          <article-title>how-to-conduct-user-experience-research-like-a-professional/.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M. Y.</given-names>
            <surname>Salohub</surname>
          </string-name>
          ,
          <article-title>Opytuvannia dlia vivchennia tsilovoi auditorii dlia stvorennia dodatku sluzhby taksi [Survey to study the target audience for creating a taxi service app]</article-title>
          ,
          <year>2022</year>
          . URL: https://docs.google.com/forms/d/e/1FAIpQLSerQrKhXxOJ7s1rqLY5fAyWI_ 9HHUgLS4HVPGarZb6k9Gc0Ag/viewform.
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>J.</given-names>
            <surname>Yablonski</surname>
          </string-name>
          , Laws of UX, 1st ed.,
          <string-name>
            <surname>O'Reilly Media</surname>
          </string-name>
          , Inc.,
          <year>2020</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>I. D.</given-names>
            <surname>Foundation</surname>
          </string-name>
          , What is Wireframing:
          <article-title>The complete guide</article-title>
          ,
          <year>2023</year>
          . URL: https://www. interaction-design.org/literature/topics/wireframing.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Meta</surname>
          </string-name>
          , React Native: Get Started,
          <year>2023</year>
          . URL: https://reactnative.dev/.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Expressjs</surname>
          </string-name>
          .com,
          <source>Express js backend documentation</source>
          ,
          <year>2023</year>
          . URL: https://expressjs.com/.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Expo</surname>
          </string-name>
          .com, Expo developer documentation,
          <year>2023</year>
          . URL: https://expo.dev/.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Mongodb</surname>
          </string-name>
          .com, MongoDB documentation,
          <year>2023</year>
          . URL: https://www.mongodb.com/.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>