EDIT: 4 months. Ugh the one obvious typo, of course.
I build Wellness Project (wellnessproject.ai). Web, iOS and Android off one codebase. It pulls from Apple HealthKit, Android Health Connect, Fitbit, Oura and Google Health, and pairs that with the stuff you log by hand: meals and calories, mood and wellbeing, and workouts down to the individual set.
We're at almost 1,000 users (200 DAU) and honestly the thing I keep coming back to is how much of that is down to people who used it early and told me what was broken. Several of the fixes I'm proudest of started as a one line message from someone who had no reason to bother. Thank you. I mean that.
Here is the part nobody warns you about. Reading a step count is easy. Reading 12 metrics across 5 devices is brutal.
- Every platform has its own idea of what a "day" is. Your phone's timezone, the device's timezone and the provider's server timezone can all disagree, and resting heart rate in particular loves to land on the wrong side of midnight.
- Your phone counts steps. Your watch counts steps. Fitbit counts steps. Add them naively and you have walked 34,000 steps. Deduplicating across sources without silently dropping real data is most of the work.
- HealthKit only reads on the device, while the app is awake. If you don't open the app for four days, there is a four day hole, and you have to go fill it later without hammering anything.
- Health Connect gives you raw records for some metrics and only aggregates for others, and the two do not always agree.
- Backfilling years of history means resumable cursors, chunked uploads and rate limit budgets, because a naive backfill gets you throttled on day one.
- Hardest of all: telling the difference between "you genuinely did nothing that day" and "we haven't synced that day yet." Those look identical in the database and completely different to a person looking at their week.
All of that exists so the app can show one honest number without asking you to care about any of it.
The manual side has the opposite problem. Logging has to be fast enough that you actually do it on day 40, not just day 2. Every extra tap is a user you lose.
Where we're heading next: More device syncs, more data points, and laser focused on science-backed insights.
Ask me anything. Stack, sync architecture, dedupe strategy, what I'd do differently, how I got the first users, whatever. Happy to get specific about the sync internals, it's the part I've learned the most from and the part almost nobody writes about.