Առաջադրանքների և պարգևների ընտանեկան հավելված․ ծնողը տալիս և ստուգում է առաջադրանքները, երեխան կատարում է դրանք, հավաքում միավորներ և փոխանակում պարգևների հետ։ Ներսում կա 23 մինի-խաղի բաժին և բաժանորդագրություն՝ սակագներով ու փորձաշրջանով։
Կլիենտներ
Սերվեր
Տվյալներ և արտաքին ծառայություններ
Պահեք ցուցիչը բլոկի վրա կամ սեղմեք այն՝ տեսնելու, թե ինչ է անում և ինչի հետ է կապված։
Ծնողների համար դժվար է երեխաներին սովորեցնել տնային գործերին և կանոնավոր պարապմունքներին, իսկ սովորական առաջադրանքների ցուցակները երեխաները արագ թողնում են։ Պետք էր արտադրանք միանգամից երկու դերի համար՝ երեխայի համար՝ խաղ հասկանալի պարգևներով, ծնողի համար՝ վերահսկողություն առանց ավելորդ առօրյայի։
Ծնողն ավելացնում է երեխաներին, ստեղծում առաջադրանքներ և ստուգում լուսանկարով հաստատումները։ Եթե չի հասցրել ստուգել, 24 ժամ անց առաջադրանքն ընդունվում է ավտոմատ, որպեսզի երեխան չսպասի։ Երեխայի հեռախոսը միանում է ընտանիքին QR կոդով կամ 6-նիշ կոդով՝ առանց առանձին հաշվի և գաղտնաբառի, իսկ ընդհանուր հեռախոսում ծնողի ռեժիմը պաշտպանված է PIN կոդով։
Միավորների և պարգևների տրամաբանությունն ինքս եմ մշակել։ Կատարված առաջադրանքի համար երեխան անմիջապես ստանում է բազային մետաղադրամներ, իսկ ծնողի հաստատումից հետո՝ բոնուս։ Մետաղադրամներ են տալիս նաև մինի-խաղերի մակարդակները, ամենօրյա մուտքը, անընդմեջ օրերի շարքերը և նվաճումները․ դրանք ծախսվում են պարգևների խանութում՝ ֆոներ, ձայներ, տառատեսակներ և էֆեկտներ։ Հիշողության, ուշադրության և տրամաբանության մինի-խաղերի բաժինը (այժմ 23 խաղ) դեռ զարգանում է, իսկ ծնողը սահմանում է խաղերի օրական ժամանակը։
Հավելվածը գրված է React Native-ով՝ առանց Expo-ի, iOS-ի և Android-ի բնիկ նախագծերով, սերվերային մասը՝ NestJS-ով, Prisma-ով և PostgreSQL-ով։ React-ով և Vite-ով գրված ադմին վահանակում թիմը վարում է նկարների և ձայների մեդիադարանը, պարգևների խանութը, հաշվեգրման կանոնները, տեքստերը երեք լեզվով, սակագները և push ծանուցումները․ կա չորս դեր՝ տարբեր իրավունքներով։ Սակագները, փորձաշրջանը և երկարաձգման հիշեցումներն արդեն աշխատում են սերվերում, իսկ քարտով առցանց վճարումը դեռ միացվում է․ սակագինն ընտրվում է կայքում, ուր հավելվածը ծնողին տանում է միանգամյա հղումով՝ առանց գաղտնաբառի։
Մետաղադրամները հաշվում է միայն սերվերը։ Յուրաքանչյուր հաշվեգրում և ծախս մատյանում գրանցվում է գործողության եզակի բանալիով, ուստի կրկնված հարցումը երկու անգամ չի հաշվեգրում, իսկ առաջադրանքը վճարվում է մեկ անգամ, որքան էլ այն նորից հանձնվի։ Մակարդակի արդյունքն ուղարկում է հեռախոսը, ուստի վճարվում է միայն առաջընթացը․ կրկնություններն ու մակարդակների վրայով թռիչքները ոչինչ չեն տալիս, իսկ խաղերից վաստակն ունի օրական առաստաղ, որը փոխվում է ադմին վահանակից՝ առանց հավելվածի նոր տարբերակի։
Հավելվածը ընտանիքին անսպասելիորեն դուրս չի հանում հաշվից․ refresh թոքենը թարմացվում է մեկ հարցումով, նույնիսկ եթե այն միանգամից մի քանի էկրան է սպասում։ Առանց ցանցի լուսանկարով հաստատումները և կատարված առաջադրանքները մտնում են հերթ և ուղարկվում են սերվեր, երբ կապը վերականգնվում է։ Տվյալները պահվում են մեկ Zustand պահոցում, որն անմիջապես բացվում է հեռախոսի հիշողությունից, հետո համաժամեցվում սերվերի հետ։
«Գտիր տարբերությունները» և նման լուսանկարային խաղերի նկարները նախապես ստեղծվում են Python-ով գրված առանձին GPU սերվերում (FastAPI՝ RunPod-ում)․ FLUX մոդելները նկարում են տեսարանները և վերանկարում առարկաները, SAM-ը կառուցում է դրանց դիմակները։ Յուրաքանչյուր մակարդակ հաստատում է մարդը ադմին վահանակում, իսկ հեռախոսը ներբեռնում է միայն պատրաստի նկարները։ PostgreSQL-ը և օբյեկտային պահոցից մեդիայի բաշխումն աշխատում են Docker-ում, իսկ սերվերը թարմացվում է մեկ սկրիպտով, որը վերագործարկումից հետո ստուգում է, որ API-ն պատասխանում է։
Բջջային հավելվածը, API-ն ադմին վահանակով, Next.js-ով կայքը և GPU սերվերը աշխատում են միասին․ ինտերֆեյսը հայերեն, ռուսերեն և անգլերեն է, մուտքը՝ Apple-ով և Google-ով, push ծանուցումներն ու վթարների հաշվետվությունները՝ Firebase-ով։ Նախագիծը մշակման փուլում է․ առաջադրանքները, մետաղադրամները, պարգևները և 23 խաղն արդեն աշխատում են, իսկ բաժանորդագրության առցանց վճարումը դեռ միացվում է։