Skip to main content

Engineering Tools/Systems

Developing a mobile application is a complicated task which necessitates various tools and systems to be put in place to maximise developer efficiency. Several of these tools have been outlined above.

1. Code Repository

MAO’s source code can be found on Github. It is split into two repositories at present, although this will probably expand once the need for infrastructure and such arises, if such infrastructure is in place and this document hasn’t been updated contact the SWE Lead.

The first repository: paradaux/mao-app contains the application resource code written in React Native using the Expo framework.

The old pre-rewrite repositories can be found at paradaux/mao-legacy and paradaux/mao-legacy-backend respectively, access to these is not granted by default, request it.

2. Documentation / Wiki Access

This documentation site serves as a general wiki for team information as well as onboarding guides, links to resources/trainings etc. It's incredibly useful to have all of our information up to date. It is built using docusaurus, a react-based static site generator for the purposes of managing documentation. You can edit any page by clicking the "edit this page" link at the bottom of the documentation, this will bring you to the file's location on github where you can edit it direclty in the Github Web client, provided you have access.

3. Project Management

This project is currently being managed using a system of organisation known as kanban. In short it is a very simplistic way of managing and keeping a track of tasks, due dates and bugs in a single tabular view akin to a wall of post-it notes.

We are using Github Projects for this purposes, at the time of writing this is done via a single project tab although this might need to be expanded as more people get involved and tasks spread out from being directly development related.

Try to work through the backlog of tickets rather than creating new tickets, as otherwise backlogged tickets will end up never being done.

If you estimate that a single ticket would take more than 3 story points of work then open up that ticket into a series of separate tasks using the ticket checklist functionality or as separate tickets.

There are several ways to describe a series of tickets. They are as follows:

Features - These are overarching tasks which will take potentially months of work and represent the largest units of work. (Usually lasts over a month - 30SP )

Bug - A bug is a ticket which represents an incident, error or issue within the project. Resolving bugs should take precedence over enabling specifications.

4. Visual Studio Code

Visual Studio Code is an open-source, lightweight, electron-based Text Editor/IDE developed by Microsoft. It is one of the better IDEs for React development, and what is currently being used to develop the application although you are free to use any editor you wish.

Scrimba as well as the Net Ninja series’ will show you how to set up VSC for React / React native development. Specific instructions will be provided during an onboarding session held online or in-person after this document has been sent to you.

5. Phone Emulator

In order to be able to effectively develop and test the applications on your own machine an emulator is necessary. If you happen to be running MacOS it is possible to run both an Android and iOS emulator, although primarily development is done on Android.

You need to Install Android Studio, a Jetbrains IDE to run Android emulators instructions to do so can be found here. It isn’t recommended to develop for React Native using Android Studio directly as it is quite resource intensive and most of the tooling it includes is intended for Android-Native (i.e. Java/Kotlin) development making it unnecessarily heavy and resource-intensive for React/Javascript development. If you still wish to use an Intellij IDE you should check out Webstorm, which is the general web-development/javascript-focussed IDE from them.