_____ _ ____
| ____|_ __(_) ___ / ___| _ __ ___ _ __ ___ ___ _ __
| _| | '__| |/ __| \___ \| '_ \ / _ \ '_ \ / __/ _ \ '__|
| |___| | | | (__ ___) | |_) | __/ | | | (_| __/ |
|_____|_| |_|\___| |____/| .__/ \___|_| |_|\___\___|_|
|_|
Eric Spencer + Matthew Caballero December 14, 2024 COMP 322/422 Reflection
HealthUp! is an application focused on bettering a user’s information about their health. Users can log nutritional information of foods and track their workouts. We wanted to develop this app to support our passion for healthy living.
If you attempt to download and run the app, see the bolded text in “Testing & Iterative Design.” The iOS version of the app does not work.
[Repeated Links:] GitHub Repository Mid-Project Demo Final-Project Demo
C322 Fit Slides
Key Contributions:
Worked on:
Key Contributions:
Worked on:
Our goal is to simplify the experience of people trying to improve their physical health. Both of us find that being fit is a great contributor to living a long happy life. Through this app, we want to support users’ efforts in being more aware of what they are eating with a macronutrient tracker. Users can also scan barcodes using their camera to get nutritional information of the product, which gets added to the tracker. Another aspect of healthy living is exercising, and our workout diary can assist our users by keeping track of their sets and reps for each exercise. Users will also be able to create a workout from a list of recommended exercises.
A user signs in with their email and gets assigned a UserID. Then, any actions performed in the app are correlated with that user in the FireBase DB. This allows data to exist on different logins on different devices. Once a user signs in, they are met with 3 options—Nutrition, Workouts, and Journal. The first two buttons allow you to write to the third option, the Journal. When you add a Workout or a Food/Nutrition entry, it gets updated to the journal to be tracked by the user. The user is supposed to be able to see their email and who they are signed in as. Within each screen there are various actions you are able to take.
MyFitnessPal requires a subscription to use the barcode feature. Why not make it ourselves for free? Matt had ideas of creating a workout app, so we combined our ideas to create HealthUp!
[Insert Navigation Hierarchy image here]
Additional note: We kept a consistent minimal color scheme outside of the welcome and login screens, which allows the user to focus on logging their nutrition and exercises without being distracted by bright colors.
I’ll be speaking about the main branch of the repository since trying to figure out diverging branches (when they stopped being worked on) would have been too confusing. In one instance, the main branch overwrote the preceding branch because of bad Android/iOS files that differed significantly from an original “npm init app” setup. In early October, I nuked the branch with a new repo, while the barcode_working branch retains the original commit history.
I initiated a personal app project (which included mentions of “dailyTask”) that was later overwritten. Most commits were just attempts to get the app to compile on my emulator (which was really challenging). The real development began on October 4 with the birth of “comp322application.”
I dived into the Barcode functionality right away—this turned out to be a mistake for several reasons. The npm installations did not cooperate when trying to manage multiple packages simultaneously, likely due to my system’s configuration. Consequently, I spent about a month and a half debugging Android and iOS files instead of focusing on JavaScript. It was after Thanksgiving that I informed Matt that I needed to abandon the progress on the problematic branch and start fresh on the working branch.
Key Technical Changes:
VisionCamera_enableCodeScanner=trueSubsequent commits were purely changes in JavaScript. The development process resembled three months of “light” work and one week of intense progress. When solving npm package issues, the final resolution often occurred at the very last minute.
The last working version on the main branch was just before the Barcode functionality was implemented. For instance, commit “12117df” compiles correctly while commit “f2c2812” fails. The solution required pulling the first commit, compiling the app, then pulling again and refreshing the JavaScript.
After commit “f2c2812,” changes included:
VisionCamera_enableCodeScanner=trueLater commits continue the progression of the app’s development. It became evident that when you give yourself three months for a project, most of the work is done lightly until a final week of hard work. For an npm package to work flawlessly, the solution only emerged on the final day before it was due. Git errors (such as accidentally pushing node modules) and refreshing the JavaScript on the emulator were recurring challenges.
This project was an excellent way to learn about React Native development in an academic environment. We also learned a lot about project management and meeting tight deadlines. Although a more refined timeline and additional effort in design and user experience would have been beneficial, we ultimately delivered a working app that fulfilled about 95% of our vision. Communication was essential throughout the project, ensuring that both team members stayed informed about ongoing work. This hands-on experience has undoubtedly prepared us for future collaborative programming endeavors.