Tend

HackDavis 2020

HackDavis is an annual hackathon hosted at University of California, Davis. The hackathon challenges participants to create something which benefits the social good. I participated in the competition with:

  • Hajra Mobashar
  • Katie Kwak
  • Joanne Chang

Our goal was to create an iOS health application which tracks the user’s feelings and medication, and displays health statistics. It can also be used by health professionals as a easy way to track how their patient is doing.

Tend - An iOS Health Application

App Specifications

Tend is a phone application built with Swift in XCode.

The app has the following functionalities:

  • Symptoms List
  • Behavior Log
  • Calendar View
  • Summary Statistics Graph View

The home page also contains a meal and medications tracker as shown below.

Tend Home Page
Tend Home Page

Tend is designed to store user data in a real-time cloud database, Firebase. The idea is to retrieve user information from the database for when the user requests historic data or for historical graphic representation.

Firebase Data Representation
Firebase Data Representation

Limitations

Partial Work

Our main limitation of the app is that it is currently unfinished. Our team split into two groups for the majority of the time: front-end and back-end. Hajra and Joanne primarily worked on the front-end while Katie and I worked on the back-end.

Unfortunately, the front-end took us longer than all of us had expected, so everyone focused on completing the design and application mechanics. By the time we had finished, we did not have enough time to finish tying the main application with the Firebase back-end.

Non-working Commit

The latest code on github with SHA 97eaac9b786d047fd77bd9e54aaa4488e3fee5e4 does not run on XCode’s iPhone simulator. During our last attempts of merging the back-end with the front-end, we ran into a merge conflict. The conflict involved files in XCode’s workspace dependencies which took us too long to fix by hand. As a result, our updated code which fixed asynchronous symptom display and many other bugs was not pushed to the git repository.

Commit SHA 20338e47bd250f615b2534d513089d944ec83bab should have a previous working version of the application.


Critiques

We demoed our application at the finale of the hackathon and received helpful feedback on our project. I also included some of my personal concerns with our design choice below.

Application Purpose

A representative from Centene Corporation asked us what our application was used for. His argument was that an application which keeps track of descriptive data is common nowadays and does not provide any extra health benefit to individuals.

Confusing Symptoms List

A graduate student mentioned that our symptoms list was confusing to understand since each symptom was depicted by an arbitrary health image. We agreed that we should have included a text explanation under each picture.

The graduate student also provided a better idea of using a clickable human body. This implementation, had we thought of it, would have simplified symptom reporting and made the process more accurate.

Exponential Cost

Had we continued this project on a large scale, we would face a lot of money issues. Firebase prices skyrocket once data insertions hit a certain amount of usage, and we would be losing a lot of money from storing too much data per user.

Database Cost

Our database was built under many nested layers. As seen in the database picture previously, our top layer is the user. Each user has a history section which contains a specific date. Each date has a list of meals and medications. There are more layers which exist under meals and medications, but we can already see that our currently built layer is already a handful.

My concern is that increasing user data would slow down the application since each Firebase request would take a long time from inefficient database construction.


Conclusion

Although we ran into a few predicaments, I believe that I learned a lot during this hackathon.

During this hackathon, I learned:

  • How to develop basic iOS apps in Swift
  • How to use and integrate Firebase into an app
  • The importance of pushing working merged code into master branch with git
  • How to analyze app designs in a more critical way

It will be important for me to keep in mind of application and algorithm design as I continue in my coding journey. Furthermore, practicing safe testing guidelines would reduce many logistical errors and make future code more reliable.


The source code for this project and commit history can be found on its GitHub page.

Yiping Su
Yiping Su
Software Engineer

I am interested in data, software engineering, and the application of computer science concepts in real-world scenarios.