Technical Report



Introduction

After getting our project synopsis, we set about brainstorming some ideas on what we wanted to make and what our focus should be. Some ideas involved a full-stack application with a backend API with ideas being discussed on whether the focus should be the frontend design or the API so applications can be build upon it easily later by other teams. There were additional talks on mobile access and whether a mobile app should be made - or just focus on a mobile app altogether - or whether to make a web app that’s compatible with mobile devices. As a result, it became evident that the research into the various frameworks could be taken advantage of to assist our development process was necessary.

Background

One of the options being considered was a mobile app. This was because the client was happy for us to focus on ideas and creating something unique and different from what they currently had. Whether alone or in tandem with a web app for computer access, we decided that the optimal thing to do would be to make apps for both iOS and Android since this would be the most convenient solution for the client as their staff make use of both platforms. This left us with a couple of options, either we make native apps for both Android and iOS using the native, first-class frameworks for both platforms (native apps), or we make use of a cross-platform framework that would allow us to build apps for both platforms simultaneously (hybrid apps).


Native

Native apps have several advantages over hybrid apps which all centre around usability. Native apps have better performance which can extend from the launch time of the app, its stability, to the smoothness of the animations and transitions within it, better, more reliable framework access to hardware functionality from the device - think GPS, camera, gyro etc. - and better support and documentation to rely upon. These are important aspects to consider as they play a vital role in improving the user experience. Despite these advantages, taking this approach would require knowledge of both Android and Swift/Objective-C and the platform frameworks necessary for development. On our team, only one member has experience with Android development which would require Swift and iOS to be learned from the beginning. This requirement is an important point to consider when decided what direction to take.


Hybrid

On the other hand, hybrid apps have gained a lot of ground in terms of access to hardware functionality and documentation and ultimately have a big pay off in allowing development of multiple apps almost simultaneously by allowing a shared codebase to be developed and then added to for platform specific details. This will save a great deal in development time. Two of the most popular cross-platform frameworks are Ionic and Xamarin. Each has their own strength and weakness.

Ionic is a cross-platform framework that is based on AngularJS. Angular is an extremely popular framework that has a ton of resources to draw upon to assist in its implementation. As it’s based on Angular, it makes use of web development skills such as HTML, CSS and Javascript. This is an advantageous framework for the team as everyone on it has experience with web dev to an extent. Xamarin on the other hand is a Microsoft framework that makes use of (primarily) C# for development but other languages can be made use of quite easily. Performance of Xamarin is also superior so would allow us to provide the closest experience to native apps possible while not actually developing natively. The flexibility of languages choice is also quite beneficial as it would allow us to make use of (for example) Python.


Web

Compared to a native mobile app, there are no inherent benefits to a web app, especially when considering the availability of hybrid apps as they take away the benefit of being to develop something usable for both platforms at once while adding their own benefit of better performance and having the possibility for a more intuitive interface. The real benefit of developing a web app comes from making it a mobile version of a desktop web app as it would allow for an overlap in codebase with the desktop version allowing for the focus to lie with the desktop UI.

Background

For creating a full stack implementation, there are multiple frameworks that can be made use of for development. We decided on a web based solution as it would allow us to develop for multiple platforms (since a compatible browser would be the only requirement) including mobile. This would also follow on from the current overtime management system allowing for consistency in workflow. Additionally, there are numerous methods of creating web content now while using different languages which gives us the flexibility to pick our preferred platform. Examples of possible frameworks and their corresponding “first class” languages (as in some cases, alternative languages are possible) include NodeJS which makes extensive use of JavaScript, Django and Python and .Net Core with C#.


NodeJS

NodeJS is a development platform that gives access to many frameworks. It is extremely fleshed out with a lot of resources to draw upon and it performs very efficiently and by its very nature is designed for web applications but additionally allows for a lot of processing to be done server-side with will contribute to a smoother experience for the end user. Many of us on the team have experience with web development too so.


Django

Django is an alternative full-stack framework that would allow us to build our site using Python. Python is a very modern language that many of us in the group are familiar with and is very “easy” to write code for - by which I mean a lot can be achieved with relatively little and simple code. Django itself is designed to make the whole web development process easy and quick.


.Net Core

.Net Core is a newer framework build (primarily) off C# developed by Microsoft that would allow the manufacture and development of web apps with relative ease, handling a lot of the client-server interactions for you making things a lot simpler. Additionally, as Xamarin and .Net Core get closer together, it will make converting the apps into mobile apps through Xamarin easier which has additional benefits.

References
  1. “Node.js.” [Online]. Available at: https://nodejs.org/en/
  2. “Xamarin.” [Online]. Available at: "https://docs.microsoft.com/en-us/aspnet/core/" # "build-web-ui-and-web-apis-using-aspnet-core-mvc"
  3. “Django.” [Online]. Available at: https://www.djangoproject.com/
  4. “Angular.” [Online]. Available at: https://angular.io/