One button tracking for iOS / Android

I’m interested ways to easily track subjective events. For example I have small sporadic pain in a particular muscle. Some days I have no pain at all, and some days a twinge or two. I’ve had this for years, without it going away completely! My hope is that recording my pain events will allow me to figure out lifestyle changes that will fix the problem.

I am a mobile app developer. And I am considering developing an iOS and Android app that would record button presses on a wearable device. I don’t want to get my phone out each time I record an event. The Puck.js looks like a good candidate for the hardware.

Can anyone recommend an existing Android app that tracks hardware button presses?

Also, would you be interested in tracking events like this? If I knew other people were interested in using an app like this, it would increase my motivation to develop it.

Definitely interested in an app that allows for tracking events with the press of a button. And to use a wearable device is a smart move IMO.

Being that you’re considering developing a mobile application, would you consider enriching each “button press” with metadata such as location, time and other variables that could help you pinpoint what the cause of any given problem is? It would also be useful if I could both export and share my data.

Thank you for the post and for potentially putting this all together. I know how much time can go into planning, building and maintaining a programming project.

Thanks for the suggestion! Yes, if work on this, I’ll include whatever metadata turns out to be useful.

The Puck.js is indeed quite interesting to use as a one-button tracker. I’ve made this small website which can be used to setup a Puck into a stand-alone one-button tracker that stores all observations on the device and can download the data. It completely works with client-side javascript, so all data stays private. @esenabre used it for one of his self-research projects.

Implementing an automated sync to a mobile app would be really cool though, as the internal memory of the Puck.js isn’t too large (which means my approach requires manual download of the data in regular intervals, generating CSV files).

When I receive the Puck, first thing I’ll try out is your website!


I’m curious if there are any updates on this? @Complexworld did you get a puck.js? Have you started tracking your events?

Yes I did buy the Puck.

Unfortunately since receiving it I’ve been in a period of intense procrastination and have done nothing with it.

Ah I know the feeling all too well!

While I haven’t looked into puck.js, I have been investigating various button-like products that could provide me with additional methods to input symptoms/factors without having to use my phone. (for a variety of reasons, I’ve found I really dislike using my phone more than absolutely necessary)

I started looking into programmable soundboards like Adafruit NeoTrellis & Launchpad X | Novation so that I could customize a button (or sequence of buttons) to log a symptom event w/ a severity or a factor (ex. drank x flo z of water).

@rayOfSunshineXD completely agree about avoiding phone usage when possible!

How many different types of input events do you want? With one button it is possible to generate 4 different event types using long press, single, double and triple clicks.

I was thinking of tracking these types of events:

  • Symptom
    • Severity: Press multiple times to increase severity (button color can change with each press to give user feedback)
  • Medication
    • Dosage (optional): Press multiple times to increase dosage. This would have to be customized per medication.
  • Factor
    • Ex 1: ‘Drank 8 fl oz of water’, additional presses increase amount of water drank
    • Ex 2: ‘Stressed’, additional presses indicate severity
    • Ex 3: ‘Hot/Cold environment’, additional presses cycle through options.

I also think it’d be cool to have some ‘controller’ buttons like:

  • ‘Quick Entry Mode’: (on/off toggle) save event automatically after user is done interacting with a button. Button color & state will then be cleared.
  • ‘New Record’: user can continuously add & update events through buttons until they’re satisfied with the set of events & properties
  • ‘Save Record’: save the current button/event states & then clear the buttons
  • ‘Update Previous Record’: user can press this to load the previously saved record as current so they can update how the symptoms/factors have progressed. Maybe: Pressing this button multiple times will load earlier entries?

Time Tracking and Symptom Tracking on same wiki may also be relevant to the more elaborate ideas.