Gainzville is an app to record and analyze physical training. The primary problem it sets out to address is that there are many apps which support particular types of training and exercises, but some training doesn't fit neatly into the boxes that app developers choose to create. What if rather than hard-coding particular exercises and relevant data points, the user was empowered to express the training they actually perform? Gainzville is an attempt to build a platform which is expressive enough to describe the vast majority of training while retaining enough structure to support analysis of that data.
See here for an aspirational description of Gainzville.
This version of Gainzville was particularly focused on the mobile UX: simplifying the the design wherever possible and refining the interface to the core structures: activities, entries (aka instances), and attributes. I used instant-db as an on-device database with syncing, motivated by getting the app work offline and supporting shared libraries and collaboration with coaches. While this wasn't the first version I built with React Native, it is the furthest along and features many of the design decisions learned through previous prototypes.
I've tried a lot of approaches, models, platforms, libraries, languages, etc. Part of this has been exploring the problem space, and part of it has been learning about software engineering.