React Native
One of the most common ways to design an app is to use React Native (an open-source framework developed by Meta).
Both iOS and Android use their own native programming language (Swift and Kotlin respectively). This makes it challenging to create apps for both platforms quickly.
React Native is a framework that makes generic App design written in Typescript directly understandable by both operating systems.
Expo
While React Native can be thought of as a mechanism to translate generic Typescript commands into native code, Expo is a platform which provides all the tools needed to build and deploy the app. It is simple to use and widely adopted by the app developers community.
Expo Application Services
Once the app has been programmed it is necessary to build binary files to install the app on devices (similar to .exe executable files with Windows). One way of doing this is using Expo's Application Services. This is what was done in this project to generate the downloadable .apk file for installation on Android.
Programming
To program a mobile app, it is necessary to run the code on the right operating system (iOS, Android). This can be done either by connecting a phone to, or run a simulator directly on, the computer.
In this project, direct connection was used (over cable). Once the phone is connected, the Expo Command Line Interface (CLI) can be used to install the native code generated by React Native directly on the phone. The Expo tools maintain the channel open, making it easy to modify the code from the computer, as it is continually updated on the phone.
Android Only
Android is much more tolerant of freely downloadable apps (via .apk files). Making an App available for iOS requires an Apple Developer Account to make the app available throught the AppStore, which takes longer to setup.