Eric Spencer
projects
Eric Spencer + Matthew Caballero December 14, 2024 COMP 322/422 Reflection
HealthUp! is an application for improving a user's information about their own health. Users can log the nutritional information of foods and track their workouts.
The iOS version of the app does not work. Before downloading and running the app, see the bolded text in "Testing & Iterative Design."
[Repeated Links:] GitHub Repository Mid-Project Demo Final-Project Demo
C322 Fit Slides
Main contributions:
Also worked on:
Main contributions:
Also worked on:
The goal is to simplify the experience of people trying to improve their physical health. A macronutrient tracker records what a user eats. Barcodes can be scanned with the camera to retrieve nutritional information for a product, which is then added to the tracker. A workout diary keeps track of sets and reps for each exercise, and a workout can be created from a list of recommended exercises.
A user signs in with an email address and is assigned a UserID. Any action performed in the app is correlated with that user in the Firebase database, so the data exists across different logins on different devices. After signing in, the user is met with three options: Nutrition, Workouts, and Journal. The first two write to the third. Adding a workout or a food entry updates the journal, where the user tracks it. The user is meant to see the email address they are signed in as. Each screen offers its own set of actions.
MyFitnessPal requires a subscription to use the barcode feature; HealthUp! makes it free. Matt had ideas for a workout app, and the two ideas were combined into HealthUp!
[Insert Navigation Hierarchy image here]
Additional note: Outside the welcome and login screens, the color scheme stays consistent and minimal, which keeps attention on logging nutrition and exercises rather than on bright colors.
This section covers the main branch of the repository. Tracing the diverging branches, and 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 and iOS files that differed significantly from an original "npm init app" setup. In early October the branch was replaced with a new repo, while the barcode_working branch retains the original commit history.
An earlier personal app project, which included mentions of "dailyTask", was later overwritten. Most commits were attempts to get the app to compile on the emulator, which was difficult. Real development began on October 4 with the creation of "comp322application."
The barcode functionality came first, which turned out to be a mistake for several reasons. The npm installations did not cooperate when several packages were managed at once, likely because of the system configuration. About a month and a half went into debugging Android and iOS files instead of JavaScript. After Thanksgiving, progress on the problematic branch was abandoned and work restarted on the working branch.
Technical changes:
VisionCamera_enableCodeScanner=trueSubsequent commits were purely changes in JavaScript. The development process amounted to three months of light work and one week of intense progress, and npm package problems tended to resolve at the very last minute.
The last working version on the main branch is just before the barcode functionality was implemented. Commit "12117df" compiles correctly, while commit "f2c2812" fails. The workaround was to pull the first commit, compile the app, then pull again and refresh the JavaScript.
After commit "f2c2812," the changes were:
VisionCamera_enableCodeScanner=trueLater commits continue the app's development. Recurring problems included git errors, such as accidentally pushing node modules, and refreshing the JavaScript on the emulator.
The project was a way to learn React Native development in an academic environment, along with project management and meeting tight deadlines. A more refined timeline and more effort on design and user experience would have been beneficial. The delivered app works and fulfilled about 95% of the original vision.