Bikary
CS 4720 Mobile App Development Final Project | Fall 2022
My Role:
iOS developer, Designer
Duration:
1 Week
Platform:
iOS
Industry:
Productivity, Self Development
A collaborative effort with Shutian Chen.
Overview
Bikary is an application designed for bike enthusiasts that features the following functionality:
02. An interface for logging biking trips, including distance, duration, and the option to add photos.
01. Display of current weather conditions and personalized biking advice based on the user's location.
03. Summary statistics of biking activity, including total distance, duration, and other metrics, organized by week, month, and year.
Technology:
1. The real time location of the user is obtained by implementing the CLLocationManagerDelegate method locationManager(:, didUpdateLocations:).
2. The real time weather is gathered using Openweather API based on the user's current GPS location (longitude, latitude).
3. Biking tips are dynamically rendered based on temperature as well as weather conditions.
4. All trip data are stored and fetched from Core Data.
Reflection:
1. Consider each technical design decision carefully and opt for the simpler and more direct approach.
When designing the Insights page, we initially placed a picker inside the toolbar within the NavigationView. This worked well until we tested on an iPhone running a version lower than iOS 16. We were unable to render the entire Insights page and were unsure of the cause. We spent a lot of time trying to fix it until we realized that it was not an issue with our internal logic but rather, a problem related to the recent deprecation of NavigationView. To solve this, we found a simple solution by adding the picker at the top of the page, not embedded in any components. This experience highlighted the importance of carefully considering each technical choice and, when possible, opting for the simpler and more straightforward approach, as including too much redundancy increases the likelihood of encountering logistical problems.
2. The significance of creating wireframes and considering existing technological resources during the design process.
This time, we strictly followed the professional product development method of creating a detailed wireframe before beginning to code. This approach greatly benefited us as it allowed us to determine which components were necessary for us to design and which we could utilize from existing human interface guidelines from Apple. Additionally, creating a wireframe beforehand enabled us to consider the relationships between components. For example, determining which components should be placed in a HStack and which in a VStack, and how many VStacks are needed overall, along with whether additional modifiers such as padding and frames were needed to align views. Due to this pre-planning, our UI work was much more efficient compared to our previous projects.