This will be a series of posts going through the process of developing an app. They’ll probably be monthly, not because it takes that long to develop an app, but because it won’t be happening full time, it’s more of a side project.
Hopefully this will provide some insights into what goes into developing an app for smartphones, and more.
About the App
The app is a weight tracking and graphing app, for use with digital scales.
The user will enter the data from their scales (weight, %fat, %muscle, %bone, and %hydration) regularly, hopefully daily. The app will display graphs of the data (weight, %fat, and body composition) over time, including short- and long-term moving averages. A custom weight range goal will be derived from recommended BMI for the user’s height.
The app will be free with minimal functionality, and operate as a subscription for advanced functionality. Data will be stored in a cloud service, accessed via user created account. The subscription will cover the cloud costs, and a small profit for the developer.
Planned advanced functionality includes setting custom weight range goals, custom %fat goals, entry and display of significant events (start/end diet, start/stop/modify gym workout programme, etc.), taking and display of progress photos, and more.
The envisioned target audience includes persons seeking to:
- lose weight,
- maintain a healthy weight,
- build muscle mass,
- monitor bone mass over extended periods of time (possibly decades),
- and more.
The app will store users data in the cloud. Why?
We aim not to lose users data. Phones get lost or stolen, crash and need to be reset, get upgraded, or fail. Regardless of how it happens, accidental, unplanned data loss happens. Always having a copy of the data in the cloud goes a long way towards never losing your data.
The app will encourage users in their health journey by:
- providing encouragement for weighing in regularly, possibly by achievements,
- providing encouragement when progressing towards goals,
- providing encouragement when a weigh-in moves away from a goal, but the trend is still towards the goal,
- providing encouragement when a weigh-in moves towards a goal, while the trend is away from the goal,
- providing a warning when the trend turns away from the goal,
- and more.
The app will be different to most weight tracking apps in:
- using target ranges for goals, instead of a single value. i.e. instead of a weight goal of 70kg, a goal of 68-72kg. Weight and %fat varies from day to day, so having a healthy target range can take away some anxiety from natural variations.
- using %fat for goals instead of weight. Do people care more about their weight, or how they feel when they grab their waist?
- gamification using positive feedback when approaching target weight/%fat goal ranges
The following challenges are anticipated, and need to be mitigated or eliminated.
Positive Body Image, and Anorexia
Possible challenges include helping develop a healthy, body positive, attitude towards weight and weight loss. I don’t want to contribute to, or reinforce, someone’s anorexia. Advice can be sought from medical sources for healthy weight and %fat ranges for height, age, and gender, and also from forums for weight loss, body building, fitness, etc.
Accuracy of measurement is another challenge. While the scales may display your weight as 70.0kg, in reality they have a margin of error, which may be expressed as +/- 2kg, or +/- 2%. This is also true for the percentage measurements, and is compounded when you multiply them together to get, for example, muscle mass. This is not usually highlighted on the scales packaging or documentation. How do we display and communicate this to the user, especially in the absence of details from the scales manufacturer?
- Your data remains your data. We are just custodians, and will not share it with anyone.
- We will instrument the app with analytics so we can tell which parts of the app are most or least used, and where users have difficulty, and effort is needed to improve usability.
Most of the basic functionality already exists as an Android app.
The first milestone is to get the app working with the following functionality:
- Create/Login to cloud account for save/restore of data
- Add/Edit weight, %fat, etc.
- Display the entered data in graph form, with moving averages
- Allow the user to choose metric or imperial measurements for entry and display of data
Rewrite of the existing app in Flutter, to get it working on both Android and iPhones. The future roadmap for Flutter includes web apps (in alpha at the moment), and native desktop apps for Windows, Mac OS, and Linux (future, but unofficial versions from 3rd parties already exist).
- Get subscriptions working.
- Allow the user to enter target ranges for weight, and/or %fat. Display these targets on charts of weight, and %fat.
The below features will be scheduled in future milestones:
- Scheduled notification to weigh-in
- Display of encouragement messages post weigh-in
- Entry and display of events
- Taking and display of progress photos
- Creating an animated gif/gifv from progress photos
- and more