Visi projektai

FableVita

FableVita — DI fitneso treneris su lygomis, užduotimis ir nuo sukčiavimo apsaugota apdovanojimų ekonomika.

Vue 3webedge-dbSwiftKotlinWearables
FableVita programos ekrano vaizdas su DI treneriuDev-story
01

Iššūkis

FableVita — vienas produktas per daug paviršių (web, trenerio įrankiai, iOS, Android, Apple Watch ir dešimtys dėvimų įrenginių), ir jis apdovanoja realią veiklą, o tai kviečia sukčiauti, jei ekonomika naivi.

02

Ką darėme

Pagrindinė realaus laiko platforma (mūsų webedge-db backendas) maitina DI trenerį, trenerių prekyvietę ir geimifikacijos sluoksnį — lygiai, serijos, užduotys, sezoninės lygos su pakilimu/kritimu, komandų iššūkiai ir trofėjų spinta — ant apdovanojimų ekonomikos: nuo tiekėjo nepriklausantis išdavimas (nuolaida/kreditas/rėmėjas), idempotentiniai mokėjimai su grąžinimu append-only audito žurnale, deterministiniai įtartinos veiklos signalai ir moderatorių tikrinimas, kad botai ir segmentų apgavikai neišsemtų apdovanojimų.

03

Rezultatas

Kiekvienas paviršius dirba su tais pačiais atleto duomenimis — nuo vienos treniruotės iki lygų sezono — o apdovanojimų pusė lieka audituojama ir sunkiai apgaunama.

Dev-story straipsnis

Kaip buvo kuriamas projektas: FableVita

FableVita yra vienas produktas per daug paviršių — web, trenerio įrankiai, iOS, Android, Apple Watch ir dešimtys dėvimų įrenginių — ir jis daro tai, ko dauguma fitneso programų nedaro: moka tikrus apdovanojimus už tikrą veiklą. Vos programa apdovanoja elgesį, žmonės bando ją apgauti, tad įdomiausia inžinerija yra ne treneris, o ekonomika, kuri turi atlaikyti atakas.

Skyriai

05

Moduliai

05

Stackas

Vue 3 + webedge-db

01

Kodėl projektas atsirado

FableVita — vienas produktas per daug paviršių (web, trenerio įrankiai, iOS, Android, Apple Watch ir dešimtys dėvimų įrenginių), ir jis apdovanoja realią veiklą, o tai kviečia sukčiauti, jei ekonomika naivi.

FableVita yra vienas produktas per daug paviršių — web, trenerio įrankiai, iOS, Android, Apple Watch ir dešimtys dėvimų įrenginių — ir jis daro tai, ko dauguma fitneso programų nedaro: moka tikrus apdovanojimus už tikrą veiklą. Vos programa apdovanoja elgesį, žmonės bando ją apgauti, tad įdomiausia inžinerija yra ne treneris, o ekonomika, kuri turi atlaikyti atakas.

02

Ką sukūrėme

Pagrindinė realaus laiko platforma (mūsų webedge-db backendas) maitina DI trenerį, trenerių prekyvietę ir geimifikacijos sluoksnį — lygiai, serijos, užduotys, sezoninės lygos su pakilimu/kritimu, komandų iššūkiai ir trofėjų spinta — ant apdovanojimų ekonomikos: nuo tiekėjo nepriklausantis išdavimas (nuolaida/kreditas/rėmėjas), idempotentiniai mokėjimai su grąžinimu append-only audito žurnale, deterministiniai įtartinos veiklos signalai ir moderatorių tikrinimas, kad botai ir segmentų apgavikai neišsemtų apdovanojimų.

Ant pagrindinio realaus laiko backendo FableVita prideda DI trenerį, trenerių prekyvietę ir geimifikaciją — lygiai, serijos, užduotys, sezoninės lygos su pakilimu ir kritimu, komandų iššūkiai ir trofėjų spinta — o po visu tuo apdovanojimų ekonomiką: nuo tiekėjo nepriklausantis išdavimas (nuolaida, kreditas ar rėmėjas), idempotentiniai mokėjimai su grąžinimu append-only audito žurnale ir sukčiavimo sluoksnis, sprendžiantis, kuri veikla realiai skaičiuojama.

03

Pagrindiniai moduliai ir vartotojo kelias

M01

Apdovanojimų išdavimas nepriklauso nuo tiekėjo ir yra idempotentinis: viena sąsaja išduoda nuolaidą, kreditą ar rėmėjo apdovanojimą, būsenų mašina tvarko vietinį ir rankinį išdavimą, o grąžinimai pridedami į audito žurnalą, ne keičiant istoriją.

M02

Anti-frodas deterministinis, ne nuojauta: centralizuoti įtartinos veiklos signalai (neįmanomi greičiai, segmentų, užduočių ir lygų anomalijos) maitina moderatorių eilę, kuri niekada automatiškai neblokuoja — žmogus patvirtina, o kiekviena veikla turi kilmės etiketę, kodėl skaičiuota ar ne.

M03

Lygos vykdo tikrą sezoną: reitingai materializuojami su stabiliomis rango ir lygiųjų taisyklėmis, sezono uždarymas idempotentinis (galima saugiai perpaleisti) ir viename žingsnyje tvarko apdovanojimus, pakilimą ir kritimą.

M04

Iššūkiai apsaugoti net nuo paties modelio: personalizuoti iššūkių juodraščiai turi deterministines ribas ir preview-validate-confirm srautą, tad modelio tekstas niekada neperrašo skaičiavimo variklių.

M05

Importai saugūs iš prigimties: dalinio commit saugus kelias reiškia, kad sesijos įrašas niekada pusiaukelėje netampa failed, o klaidų injekcijos testai įrodo, kad šalutiniai efektai niekada nesugadina pagrindinių įrašų.

04

Architektūra ir technologiniai sprendimai

Sukurta su Vue 3, webedge-db, Swift, Kotlin, Wearables.

Pagrindinis realaus laiko backendas maitina atskiras trenerio programas, mobiliuosius klientus ir dėvimų įrenginių adapterius (Apple Watch, Garmin, Polar, Whoop, Oura, Fitbit, Withings, Coros ir kt.); Wave-1 sustiprinimas uždarė root-autorizacijos spragas ir padarė paslaptis produkcijai griežtas; net Cloudflare Pages 25MB riba privertė atsisakyti įrenginyje veikiančio mitybos modelio — tikras apribojimas, sutvarkytas sąžiningai.

05

Rezultatas ir pamokos

Kiekvienas paviršius dirba su tais pačiais atleto duomenimis — nuo vienos treniruotės iki lygų sezono — o apdovanojimų pusė lieka audituojama ir sunkiai apgaunama.

Fitneso super-appas, kur apdovanojimų pusė audituojama ir sunkiai apgaunama: vienas atleto duomenų modelis nuo vienos treniruotės iki viso lygų sezono, su ekonomika, kuri daro prielaidą, kad bus atakuojama, ir pastatyta atlaikyti.

Toliau skaityti

Šie projektai turi artimų technologinių arba produkto sprendimų, todėl padeda matyti, kaip tas pats principas veikia kitame kontekste.

Turite panašią idėją?

Aptarti projektą