I've been struggling with severe depression and anxiety since high school. Many mentally ill people, including me, use bullet journalling and habit tracking to build healthier daily routines. However, while recording this data is useful, it would be ideal if users could analyze it to determine which factors actually affect their mood. This app is designed to provide a way to do that.
What it does
(h)aBit Better provides a friendly interface for tracking a variety of health and well-being related habits. As the user enters data at the end of every day, it is stored locally on the user's iOS device using CoreData. It is never sent to third parties or stored on remote servers.
Once data is entered, it is added to a database and used to retrain the ML model. The app ships with a default model trained on testing data, but as the user enters more data, the model will be retrained based on their own data.
The app provides a variety of visualizations of the user's recent data. It also provides suggestions (using predictions from the ML model) about which factors are most influential on the user's mood.
How I built it
(h)aBit Better is was built in Xcode 9.2 and written in Swift 4.0.
Challenges I ran into
No one on our team had ever developed for iOS, so our first challenge was learning Swift. I wouldn't say I'm an expert, but I think I picked it up pretty swiftly.
Other major challenges were:
- lack of training data for ML model - we bootstrapped a training set from about 45 days of my personal bullet journal data
- problems with iOS chart library - I struggled to install a library for plotting data in iOS. For now, I made some mock-up images using ggplot in R, and I will work on solving this issue after the hackathon.
Accomplishments that I'm proud of
- Learning Swift
- Learning a little bit about how to incorporate ML into apps
- having a working prototype that looks pretty nice
What I learned
- Swift programming
- basics of CoreData and CoreML
- Xcode Interface Builder
What's next for habittracker
There are SO MANY features we still want to implement, including:
- exporting habit data as a CSV to share with healthcare providers
- push notification reminders to fill out the tracker every night
- ability to select which habits are tracked, and add new custom habits
- finish data visualization functionality, and add options to customize graphs
- UI design refinements - we are striving for a clean, friendly, and calming feel