Все проекты

FableVita

FableVita — AI-фитнес-тренер с лигами, квестами и защищённой от фрода экономикой наград.

Vue 3webedge-dbSwiftKotlinWearables
Скриншот приложения FableVita с AI-коучемDev-story
01

Задача

FableVita — один продукт на множестве поверхностей (web, инструменты тренера, iOS, Android, Apple Watch и десяток wearables), и он награждает реальную активность, а это провоцирует накрутку, если экономика наивна.

02

Что делали

Основная real-time платформа (наш бэкенд webedge-db) питает AI-коуча, маркетплейс тренеров и слой геймификации — уровни, стрики, квесты, сезонные лиги с повышением/понижением, командные челленджи и витрину трофеев — поверх экономики наград: независимая от провайдера выдача (скидка / кредит / спонсор), идемпотентные выплаты с возвратом в append-only аудит-леджере, детерминированные сигналы подозрительной активности и модерация, чтобы боты и накрутчики сегментов не выкачивали награды.

03

Результат

Каждая поверхность работает с одними данными атлета — от одной тренировки до сезона лиг — а сторона наград остаётся аудируемой и трудной для накрутки.

Dev-story статья

FableVita: как создавался проект

FableVita это один продукт на множестве поверхностей — web, инструменты тренера, iOS, Android, Apple Watch и десяток носимых — и он делает то, чего большинство фитнес-приложений не делают: платит реальные награды за реальную активность. Как только приложение награждает поведение, его пытаются накрутить, так что самое интересное в инженерии не тренер, а экономика, которая должна пережить атаки.

Разделы

05

Модули

05

Стек

Vue 3 + webedge-db

01

Почему появился проект

FableVita — один продукт на множестве поверхностей (web, инструменты тренера, iOS, Android, Apple Watch и десяток wearables), и он награждает реальную активность, а это провоцирует накрутку, если экономика наивна.

FableVita это один продукт на множестве поверхностей — web, инструменты тренера, iOS, Android, Apple Watch и десяток носимых — и он делает то, чего большинство фитнес-приложений не делают: платит реальные награды за реальную активность. Как только приложение награждает поведение, его пытаются накрутить, так что самое интересное в инженерии не тренер, а экономика, которая должна пережить атаки.

02

Что было создано

Основная real-time платформа (наш бэкенд webedge-db) питает AI-коуча, маркетплейс тренеров и слой геймификации — уровни, стрики, квесты, сезонные лиги с повышением/понижением, командные челленджи и витрину трофеев — поверх экономики наград: независимая от провайдера выдача (скидка / кредит / спонсор), идемпотентные выплаты с возвратом в append-only аудит-леджере, детерминированные сигналы подозрительной активности и модерация, чтобы боты и накрутчики сегментов не выкачивали награды.

Поверх основного real-time бэкенда FableVita добавляет AI-коуча, маркетплейс тренеров и геймификацию — уровни, стрики, квесты, сезонные лиги с повышением и понижением, командные челленджи и витрину трофеев — а под всем этим экономику наград: независимая от провайдера выдача (скидка, кредит или спонсор), идемпотентные выплаты с возвратом в append-only аудит-леджере и слой анти-фрода, решающий, какая активность реально засчитывается.

03

Основные модули и путь пользователя

M01

Выдача наград независима от провайдера и идемпотентна: единый интерфейс выдаёт скидку, кредит или спонсорскую награду, стейт-машина ведёт локальную и ручную выдачу, а возвраты дописываются в аудит-леджер, а не меняют историю.

M02

Анти-фрод детерминированный, а не на ощущениях: централизованные сигналы подозрительной активности (невозможные скорости, аномалии сегментов, квестов и лиг) питают очередь модерации, которая никогда не банит автоматически — подтверждает человек, а каждая активность несёт метку происхождения, почему засчиталась или нет.

M03

Лиги ведут настоящий сезон: таблицы материализуются со стабильными правилами ранга и ничьих, закрытие сезона идемпотентно (можно безопасно перезапустить) и за один проход ведёт награды, повышение и понижение.

M04

Челленджи защищены даже от самой модели: персонализированные черновики челленджей имеют детерминированные границы и поток preview-validate-confirm, так что текст модели никогда не переопределяет движки подсчёта.

M05

Импорты безопасны по построению: путь, безопасный к частичному коммиту, означает, что вставка сессии никогда не переходит в failed на полпути, а тесты с инъекцией сбоев доказывают, что side-effects никогда не ломают основные записи.

04

Архитектура и технологические решения

Сделано на Vue 3, webedge-db, Swift, Kotlin, Wearables.

Основной real-time бэкенд питает отдельные приложения тренера, мобильные клиенты и адаптеры носимых (Apple Watch, Garmin, Polar, Whoop, Oura, Fitbit, Withings, Coros и др.); Wave-1 усиление закрыло root-авторизационные дыры и сделало секреты строгими для прода; даже лимит Cloudflare Pages 25MB заставил отказаться от работающей на устройстве ONNX-модели питания — реальное ограничение, обработанное честно.

05

Результат и выводы

Каждая поверхность работает с одними данными атлета — от одной тренировки до сезона лиг — а сторона наград остаётся аудируемой и трудной для накрутки.

Фитнес-суперапп, где сторона наград аудируема и трудна для накрутки: одна модель данных атлета от одной тренировки до целого сезона лиг, с экономикой, которая предполагает, что её будут атаковать, и построена это выдержать.

Читать дальше

Эти проекты близки по техническим или продуктовым решениям и показывают, как тот же принцип работает в другом контексте.

Есть похожая идея?

Обсудить проект