Healthy Paws App by EmmaLeigh Nelson

Project Overview

The purpose of Healthy Paws is to serve as a health app for dogs. It can be used to contain all of the users ' dogs' information through profiles. The profiles retain their name, breed, age, and weight. Each dog profile is also linked to their own food hub that contains the dog's food, how much they get fed, and their feeding schedule. Each dog also has their health profile that pertains to them. The health section holds the vaccines the dog has received, any health issues, the name of the vet and clinic, and any treatment plans such as prescription medication or supplements, as well as when the next vet appointment is.

A settings section to allow the user to receive notifications and toggle from light to dark mode. Healthy Paws was built in Xcode using Swift/SwiftUI, and later integrated with Firebase, with the idea that this is to be marketed to Apple and iOS users only.

This project is split into two phases: Pre-Integration and Post-Integration. Pre-Integration refers to everything that was done in the project before Firebase, and Post-Integration refers to everything done in the project after Firebase was integrated with Xcode.

Pre-Firebase Integration: September, October, and November

Pre-integration started in September 2025 and ended at early November 2025. An outline was made before the start of pre-integration in August 2025, providing a rough draft of what each month would contain, milestones to be done to build the project. September focused on watching YouTube videos that focused on Swift tutorials to learn the basics of the language, and then moved to more advanced tutorials that involved functions, login, etc.

In addition to the tutorials, the project was created in Xcode; only two files existed for the entirety of the pre-integration phase- contentView.swift, and healthypawsapp.swift files. On paper, each section, dog profile, health, food, and settings, were written down with details on what each category should pertain to ensure that they would be transferred to code. To end the month of September, the login page was created along with an authentication function to ensure that the user could log in to their account and be redirected to the homepage. October focused on the actual coding of the project. Following the successful login page, the homepage was created to mimic that of the dashboard on Canvas, with square tiles that, once clicked on, would redirect the user to each category. This was done using a Navigation VStack and a LazyVGrid that put each square into a grid, taking into account the height and width of the square tiles, then each tile became a button for the category the user wished to navigate to.

In total, there are four buttons, each coded to have a different color, the name of the button/category, and a picture that easily denotes what that category is. Each button was designed as follows:

The Dog Profile View contained the actual page that holds the dog profiles. Once added, for the user to view their dog’s profiles, it also gives the user the option to add a dog and later edit their dog’s profile. The Add Dog struct pertains to everything that is needed for the user to add information about their dog in order to build the dog’s profile. Add Dog includes;

To add a dog the user will click the “save dog” button in order for it to be saved to the Dog Profile.

Edit Dog Profile essentially allows the user to edit the dog’s profile by clicking the blue pencil button in the right-hand corner of the dog’s profile. In addition to these structs, there are functions responsible for loading, saving, and deleting dog profiles. The Food and Health categories followed this same logic when building the code; the only differences were that notifications were added to both categories for medication and feeding times.

The Health section contained HealthData and HealthView structs. The HealthView struct contained three micro sections that held the primary veterinary information, medication and supplements, and health issues. These functions are the same as the Dog Profile section, with save and load Health Data, delete medications, and delete health issue. A new function, formattedDate, held the notification scheduler. Once a time was selected for the medication to be given to schedule the medication reminder and prompt the user at the selected time to give their dog its medication. The add and edit structs for adding and editing medication, health issues, and vet information are along the same lines as the same structs used for Dog Profile.

The Food section follows the same format as Dog Profile and Health, with codable and identifiable structs, FoodView, Edit, and Add Food, along with the same load, save, delete, and FormatTime functions for scheduling notification reminders for the user to feed their dog breakfast and dinner at the chosen times. FoodView held the type of food the dog was being fed, the portion size the dog got (one cup, half cup, etc.), and what times the dog was to be fed breakfast and dinner.

The Notifications section contains the notifications functions including:

A button was added to view the user’s profile, but it does not work; it is simply there for show.

The end of October and early November dealt with testing what was already coded pre-integration to ensure that everything worked properly and to capture screen-recordings of the app to show how it worked on the simulator, which simulated the app being used on an iPhone 17.

Pre-Integration Test Videos

Pre-Integration Sample Code

Post-Firebase Integration: November and December

Post-integration took place in November, after the pre-integration screen recordings of the simulator and testing finished. The first thing that was done was registering Healthy Paws with Firebase Studios in order to download the SDK packages to Xcode. This is incredibly important because without it, you cannot move the data the user enters for their dogs into any of the built databases, or run a simulation.

Once completed the databases were built in Firebase, including dogProfiles, dogs, feedingSchedule, healthRecords, and notifications. Each database is tied to the dog’s unique ID, meaning that no other dog profile can access or become entwined with it, and that the health records and feeding schedule are tied to that dog.

Due to everything pertaining to the app being in content view, each section had to be moved into separate files, which helped with lag times and seeing everything separately in the project itself. This eliminates having to scroll through thousands of lines of code to get to one part. Most files had to include import foundation, firebase, and firebasefirestore in order to achieve that connection to the Firebase databases.

The biggest change to the project itself, besides moving everything to separate Swift files, was the addition of the firestoreManager.swift file and the homePageView.swift file that held all the Firebase connection functions in order to have that integration and to smoothly show the homepage after login, and each of the categories that were previously defined in September during the pre-integration phase.

This presented as a learning curve where more research had to be done to figure out how to successfully make that switch from having all the data the user entered go from being saved in the App storage to learning what functions were needed that worked in cohesion with Swift and the Xcode compiler to work with Firebase.The integration itself took two weeks, with mostly troubleshooting and having to fix errors as they became relevant.

Post Integration Test Videos

Code Samples From Post Integration

Firebase Database Photos

Notes for Future Work, Issues that arised, and General Notes

The most prominent errors were that of the database (db) being out of scope for Firebase to the simulator, and the compiler itself crashing due to storage capacity and CPU processing issues on the MacBook itself.

Given more time with the project, some improvements could be made, such as giving the user the option to upload a picture of their dog to the profile, as well as having the option to take a picture of the dog’s food and have it take the information on the bag and fill in the required information for food.

Additional improvements noted for future revisions identified are to move the login function to be held in a database and fix the manage profile button in notifications to be functional. Additionally, the ultimate goal is to eventually have this app registered with Apple to be sold on the App Store and be made available for people to use in real life.

Healthy Paws Sources Used

DropBox Files for Screen Recordings and Screenshots Pre and Post Integration

Healthy Paws Final Report