XyloFit
Fitness tracking that turns consistency into a game.
A cross-platform fitness app that pairs calorie tracking and AI-assisted meal logging with head-to-head PvP challenges — so the reason to open it tomorrow is someone to beat.
xylofit.net(opens in a new tab)- Founder & sole engineer — product, UI, mobile, backend
- Android (Google Play) · iOS coming soon
- Flutter, Firebase, AI integrations, FCM, AdMob
Overview
XyloFit is a fitness and nutrition app built around one observation: people don't quit calorie tracking because they lack data, they quit because logging is tedious and progress is lonely. XyloFit makes logging fast with AI and makes progress social through competition.
Problem
Most trackers optimise the spreadsheet, not the habit. Logging a meal takes too many taps, estimates feel like homework, and nothing pulls you back on day four. Retention — not features — is the real problem to solve.
Goals
- Log a meal in seconds, not minutes
- Give users a social reason to return every day
- Keep competitive results fair when the data is self-reported
- Run the product sustainably as a free, ad-supported app
My role
Founder & sole engineer — product, UI, mobile, backend.
- Product definition, information architecture and UI design
- Flutter application architecture and state management
- Firebase data model, security rules and server-side logic
- AI integration for nutrition estimation
- Notification strategy (FCM) and monetization (AdMob)
Technology
- Flutter / Dart
- Firebase Auth / Cloud Firestore / Server-side triggers
- AI nutrition estimation / Prompted structured output
- Firebase Cloud Messaging / AdMob
Architecture
The client stays thin and optimistic; anything that affects fairness or another user lives on the server.
Flutter client
Optimistic UI, local cache, offline-tolerant logging
Auth & Firestore
Profiles, daily logs and duel documents with scoped security rules
AI service
Meal text/photo → structured macros the user can confirm or edit
Duel engine
Server-side scoring and validation so the client can't award itself points
FCM
Event-driven invites, results and reminders — rate-limited per user
Challenges & solutions
Fair competition on self-reported data
If scoring runs on the client, anyone can win. And raw calorie numbers favour whoever logs the most, not whoever is most consistent.
Moved scoring server-side, normalised scores around each user's own targets, and capped outliers so consistency beats volume.
AI estimates are uncertain by nature
A model guessing “chicken salad” can be off by hundreds of calories. Presenting that as fact erodes trust fast.
AI output is a draft, never a record: users see the breakdown, adjust portions in one tap, then confirm. Structured output keeps parsing reliable.
Realtime without runaway reads
Live duel updates via naive listeners multiply Firestore reads — and cost — with every active user.
Denormalised duel summary documents and tightly scoped listeners, so a screen subscribes to exactly the data it shows.
Screens
- 9:41Saturday, 4 OctToday● 12-day streak1,084kcal remainingProtein96 / 140gCarbs148 / 260gFat41 / 70gBreakfastOats, banana, whey412LunchAIChicken, rice, salad612SnackGreek yoghurt292+
Today — calories and macros at a glance - 9:41Chicken · 0.97Salad · 0.91Rice · 0.94Review your lunchAI draftGrilled chicken180 g · tap to adjust297 kcalBasmati rice150 g · tap to adjust195 kcalSide salad1 bowl · tap to adjust120 kcalTotal612 kcalEditConfirm & log
AI meal logging — a draft you confirm - 9:41Weekly duel2d 14h leftHRYou742VSEKEmre K.701Daily consistencyM T W T F S SLogged every meal+40Hit protein target+25Emre closed his rings−18+
PvP duel — consistency is the score
- xylofit.net

xylofit.net — the live product site
Results
- Live on Google Play, with the product site at xylofit.net
- End-to-end ownership: design, mobile, backend, AI, notifications and monetization by one engineer
- A foundation for adding new competitive formats without client releases
Lessons learned
“Retention is a product problem first and a feature list second.”
“Treat AI output as a suggestion with an edit path — trust follows.”
“Decide early what the client is not allowed to decide.”