_____ _ ____
| ____|_ __(_) ___ / ___| _ __ ___ _ __ ___ ___ _ __
| _| | '__| |/ __| \___ \| '_ \ / _ \ '_ \ / __/ _ \ '__|
| |___| | | | (__ ___) | |_) | __/ | | | (_| __/ |
|_____|_| |_|\___| |____/| .__/ \___|_| |_|\___\___|_|
|_|
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. The app exists to support 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:
The goal is to simplify the experience of people trying to improve their physical health, on the premise that being fit is a great contributor to living a long happy life. The app supports 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 the workout diary assists 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; HealthUp! makes it free. Matt had ideas of creating a workout app, and the two ideas were combined into HealthUp!
[Insert Navigation Hierarchy image here]
Additional note: The color scheme stays consistent and minimal 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.
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/iOS files that differed significantly from an original "npm init app" setup. In early October the branch was nuked 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 just attempts to get the app to compile on the emulator, which was really challenging. Real development began on October 4 with the birth of "comp322application."
The Barcode functionality came first, which turned out to be a mistake for several reasons. The npm installations did not cooperate when trying to manage multiple packages simultaneously, likely because of the system configuration. About a month and a half went into debugging Android and iOS files instead of JavaScript. After Thanksgiving the progress on the problematic branch was abandoned and work restarted 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.
The project was an excellent way to learn React Native development in an academic environment, along with project management and meeting tight deadlines. A more refined timeline and additional effort in design and user experience would have been beneficial. The delivered app works and fulfilled about 95% of the original vision. Communication was essential throughout: both team members stayed informed about ongoing work.