FableVita
FableVita — an AI fitness coach with leagues, quests and a fraud-safe rewards economy.
Dev-storyChallenge
FableVita is one product across many surfaces — web, coach tools, iOS, Android, Apple Watch and a dozen wearable integrations — and it rewards real activity, which invites cheating if the economy is naive.
What we did
A core real-time platform (our own webedge-db backend) feeds an AI coach, a coach marketplace and a gamification layer — levels, streaks, quests, seasonal leagues with promotion/relegation, team challenges and a trophy cabinet — on top of a rewards economy: provider-neutral fulfillment (discount / store-credit / sponsor), idempotent payouts with refund/reversal on an append-only audit ledger, deterministic suspicious-activity signals and moderator triage so bots and segment-cheats do not drain rewards.
Result
Every surface works off the same athlete data — from logging one workout to a season of leagues — while the reward side stays auditable and hard to game.
Dev-story article
FableVita: how the project was built
FableVita is one product spread across many surfaces — web, coach tools, iOS, Android, Apple Watch and a dozen wearable integrations — and it does something most fitness apps do not: it pays out real rewards for real activity. The moment an app rewards behaviour, people try to game it, so the interesting engineering is less the coach and more the economy that has to survive being attacked.
Sections
05
Modules
05
Stack
Vue 3 + webedge-db
Why the project exists
FableVita is one product across many surfaces — web, coach tools, iOS, Android, Apple Watch and a dozen wearable integrations — and it rewards real activity, which invites cheating if the economy is naive.
FableVita is one product spread across many surfaces — web, coach tools, iOS, Android, Apple Watch and a dozen wearable integrations — and it does something most fitness apps do not: it pays out real rewards for real activity. The moment an app rewards behaviour, people try to game it, so the interesting engineering is less the coach and more the economy that has to survive being attacked.
What was built
A core real-time platform (our own webedge-db backend) feeds an AI coach, a coach marketplace and a gamification layer — levels, streaks, quests, seasonal leagues with promotion/relegation, team challenges and a trophy cabinet — on top of a rewards economy: provider-neutral fulfillment (discount / store-credit / sponsor), idempotent payouts with refund/reversal on an append-only audit ledger, deterministic suspicious-activity signals and moderator triage so bots and segment-cheats do not drain rewards.
On top of a core real-time backend, FableVita layers an AI coach, a coach marketplace and a gamification system — levels, streaks, quests, seasonal leagues with promotion and relegation, team challenges and a trophy cabinet — and under all of that a rewards economy: provider-neutral fulfillment (discount, store-credit or sponsor), idempotent payouts with refund and reversal recorded on an append-only audit ledger, and a fraud layer that decides which activity actually counts.
Main modules and user path
Rewards fulfillment is provider-neutral and idempotent: a single interface issues a discount, store-credit or sponsor reward, a state machine handles local and manual fulfillment, and refunds and reversals are appended to an audit ledger rather than mutating history.
Anti-fraud is deterministic, not vibes: centralized suspicious-activity signals (impossible speeds, segment, quest and league anomalies) feed a moderator triage queue that never auto-bans — a human confirms, and every activity carries a provenance label explaining why it did or did not count.
Leagues run a real season: standings materialize with stable rank and tie rules, season close is idempotent (it can be re-run safely) and handles rewards, promotion and relegation in one pass.
Challenges are guarded against the model itself: personalized challenge drafts have deterministic bounds and a preview-then-validate-then-confirm flow, so model text can never override the scoring engines.
Imports are safe by construction: a partial-commit-safe path means a session insert never flips to failed halfway, and failure-injection tests prove side effects never break core writes.
Architecture and technology decisions
Built with Vue 3, webedge-db, Swift, Kotlin, Wearables.
A core real-time backend feeds separate coach apps, mobile clients and wearable adapters (Apple Watch, Garmin, Polar, Whoop, Oura, Fitbit, Withings, Coros and more); Wave-1 hardening closed root-authorization gaps and made secrets production-strict; the Cloudflare Pages 25MB limit even forced dropping an on-device nutrition model — a real constraint, handled honestly.
Result and lessons
Every surface works off the same athlete data — from logging one workout to a season of leagues — while the reward side stays auditable and hard to game.
A fitness super-app where the reward side is auditable and hard to game: one athlete data model from a single logged workout to a full season of leagues, with an economy that assumes it will be attacked and is built to survive it.
Related articles
Read next
Related project stories
These projects share nearby technical or product decisions, so they show how the same principle behaves in another context.
Dev-storyCMS
A dynamic headless CMS on webedge-db — content types, media, roles, and the public read API behind our sites and their articles.
Dev-storyCalendar booking platform
Scheduling on Vue 3 — availability, bookings, confirmations and one-click Meet video links.
Dev-storyePokalbis community forum
The public community forum for ePokalbis, built on webedge-db.
Have a similar idea?
Discuss your project