Gerard McKendry
Motion is an activity tracking application for Android devices, similar to apps like Strava. Start an activity, walk around, and you'll see the route you've taken mapped out on the screen. Once you're finished, press the stop button, and that activity will be saved to your account. From there, you can look back on all of your previous activities. You can even add other users as friends and share activities with each other, comparing your cumulative statistics on the app.
The objective of this project was to gain experience and an understanding of how mobile apps are developed through the use of a cross-platform development framework, a framework that allows developers to build an app for multiple mobile platforms at once. It also aimed to make use of features unique to mobile devices - in this specific case, location services. The main feature to be implemented was the tracking of activities, which involved the usage of a mapping library and the usage of location services to get the user's location repeatedly. This project would also necessitate the creation of a back-end server that connected to a database in the cloud. This would allow for users' accounts and data to be stored securely. Another objective was creating a friends feature, that would allow users to add other users as friends, and allow these friends to share their activities with each other.
By the end of the project, I had a much greater understanding of the development flow behind React Native applications and mobile applications in general. I met the objectives that I set out at the beginning, even though some of them were more tricky than initially expected. In particular, getting the mapping API to work was a challenge, but I eventually overcame that challenge and got it all to work. I have more ideas on how the application could be expanded in future, such as customisation features, more ways to interact with your friends and their activities such as comments, progress tracking over time on a weekly basis and weekly generated reports, and more. Learning to use a new framework almost entirely self-taught was a very good learning experience and one that I expect will benefit me greatly in the future, and programming for mobile platforms for the first time has opened up a lot of new potential opportunities.
The attached thesis contains an overview of the project's main aim and the objectives to be reached. It contains a literature review which details similar applications and some technical research on the required tools that can be used for its development. The requirements analysis outlines the research carried out to ensure that the project meets its specified requirements and functions as intended. The design chapter describes some elements of how parts of the codebase were designed, and features some design prototypes made using Figma. It also features a list of the libraries that would be used for the project, the ways that the application would handle certain events and errors, and a representation of the database. The implementation chapter specifies the features that I had the most difficulty implementing, and how I eventually solved the issues and implemented them successfully. It also details the development environment used throughout the project. Finally, the testing and evaluation chapter outlines the types of testing that were done (unit testing and user testing) and the bugs that couldn't be resolved in time, and the project management chapter discusses how agile methodology and sprints were used throughout the project.
I'm a front-end and back-end developer and programmer with experience in a variety of programming languages. Most of my experience is in high-level languages such as JavaScript, TypeScript and Python, but I also have an interest in learning lower-level languages such as Rust. I have experience with frameworks such as React Native (Expo), Flask, Laravel, Vue, and more. I have also worked with IADT a few times in the past to provide coding workshops and summer camps to secondary year students based on what I've learned during the course.