Щоб мама не закидала вишивку: трекер із м'якою гейміфікацією
Пет-проєкти

Щоб мама не закидала вишивку: трекер із м'якою гейміфікацією

Велика вишивка довго виглядає нерухомою

Мама вишиває хрестиком. Велика схема - це десятки тисяч хрестиків і місяці роботи. За один вечір можна зробити багато, а на картинці зміна майже непомітна. Коли прогрес ховається всередині величезного полотна, розпочату роботу легко відкласти й одного дня до неї не повернутися.

Хотілося вишивати потроху щодня й бачити, як окремі вечори складаються в завершену роботу. Так з'явився застосунок. Спершу він відповідав лише на питання "скільки зроблено сьогодні", а потім навколо цього запису виріс місячний план, статистика та ігрові механіки, які підтримують звичку без тиску.

Вечір завершується одним чесним записом

Кожна вишивка заведена окремим проєктом із загальним числом хрестиків. У кінці вечора мама записує, скільки зробила за день. Із послідовності таких позначок складається вся картина: скільки вже позаду, скільки залишилося і з якою швидкістю рухається робота.

Екран "Сьогодні"
Відкриваєш застосунок і одразу бачиш денну норму й скільки вже зроблено.
Вишивка як проєкт
По кожній роботі видно всього хрестиків, зроблено та залишок до кінця.
Календар без правок заднім числом
Позначки вносяться день у день, а минулі дні закриваються.
Статистика
З накопичених вечорів видно темп: як іде місяць, де прискорилася, де був спад.
Позавчорашній запис уже не переписати

Закритий день порахований цілком: по ньому нараховані череда, рослина, медаль і досягнення. Дозволити правку заднім числом означало б розмотувати весь цей ланцюжок назад. Простіше й чесніше залишити як є, і тоді в календарі видно реальний ритм, а не підмальовану картинку.

Місячний план показує темп, а не ставить дедлайн

По кожній вишивці ставиться посильний план на місяць. Застосунок показує поточний темп: іде робота за планом, випереджає його чи відстає. Це орієнтир, за яким видно положення всередині довгого проєкту, а не дата, до якої хобі зобов'язане перетворитися на виконане завдання.

У проєктів є зрозумілі стани: активна робота, завершена та архів. Тому поточні схеми не змішуються із завершеними та відкладеними, а список не перетворюється на звалище починань.

Гра має підтримувати, а не ловити на азарт

Ігровий шар був для мене найбільш незвичним: я здебільшого роблю сайти, а тут уперше проєктував механіку звички. Від самого початку діяло одне обмеження - застосунок має залишатися теплим трекером. У ньому немає очок, внутрішньої валюти, лідербордів і змагання з іншими. Нічого, що змушувало б заходити заради чергового "обертання барабана". Нагорода має порадувати, а пропуск - не перетворитися на покарання.

Череда днів і її заморозка. Застосунок рахує, скільки днів поспіль вдалося повишивати - звичка затягує м'яко, сама собою. Але життя буває всяке, і пропущений вечір не має обнуляти тижні праці. Тому є "заморозка": вона прощає один пропущений день і підхоплюється автоматично, а щоб це не перетворилося на лазівку, доступна не частіше одного разу на тридцять днів. Череда триває, але чесність зберігається.

Медалі за місяць зі зрозумілою планкою. У кінці місяця підсумок по кожній вишивці відзначається медаллю, і планка прозора - це частка виконаного плану:

🌱 Паросток
Будь-який прогрес - навіть якщо план виконано менше ніж наполовину. Почала - уже молодець.
🥉 Бронза
План виконано наполовину і більше.
🥇 Золото
План місяця закрито повністю.
💎 Алмаз
План перевиконано в півтора раза.

Нижня медаль - "паросток", а не порожнє місце: навіть маленький внесок визнається, і ситуації "ти не впоралася" просто не існує.

Сад накопичує череди, а ачивки просто веселять

Зростаючий сад. Постійність перетворюється на живий сад: чим довша череда, тим вищий рівень рослини - дванадцять сходинок від паростка й травинки до троянди, соняшника і сосни, а повні тридцять днів поспіль дають найбільшу рослину. Коли череда переривається, рослина потрапляє в колекцію, і сад накопичує їх як пам'ять про пройдений шлях. У кожної рослини свій "журнал": коли була ця череда, яким був найкращий день і над якою вишивкою мама тоді працювала.

Досягнення, багато з гумором. Крім серйозних віх - хрестики, серії, плани - є велика колекція необов'язкових ачивок, частина з них захована в секретні категорії "Магічні числа", "Дати й час" та "Візерунки й ритми". Частина про числові збіги: набрати за день рівно 777 ("Джекпот"), 666 ("Диявол"), 314 ("Число Пі"), зібрати паліндром або рівно 12 345 хрестиків усього. Частина прив'язана до календаря: відзначитися в День вишиванки, вишити в новорічну ніч, спіймати п'ятницю 13-те чи 29 лютого. На результат це не впливає - вишиваєш ти для себе, а ачивки просто привід усміхнутися й зібрати ще одну.

Лляний холст замість приладової панелі

Інтерфейс я збирав не як приладову панель, а як затишну річ під тему рукоділля. Тло стилізоване під лляний холст, нагороди лежать на "полиці з медалями", а сад - це не список, а живі рослини, яких можна торкнутися поглядом.

Екран "Сьогодні" з теплом
Привітання за часом доби й завдання дня - від "вишийте 50 хрестиків у найзакинутішому проєкті" до "погладьте кота, немає кота - погладьте себе по голові". Відкрити застосунок приємно саме по собі.
Теплий контент із гумором
Щодня зустрічають різні рубрики: гороскоп вишивальниці ("Овен сьогодні почне новий проєкт. Ні, не закінчивши старий"), пророцтво, шкідлива порада ("Сон переоцінений. Вишивка - ні"), відмазка, діагноз, факт дня та фейкова цитата великих ("Один маленький хрестик для людини - великий крок для вишивки" - Ніл Армстронг). Затишок замість сухого трекера.
Свій профіль і тема
Аватар із завантаженим фото та дев'ять палітр нижньої панелі з поетичними іменами - "Лляна сорочка", "Пелюстки півонії", "Шавлія в чаї", "Келих каберне", "Північ у Венеції", світлі й темні. Застосунок відчувається домашнім, а не казенним.

При всій кількості механік щоденна дія залишається однією: відкрити застосунок з іконки на телефоні, відзначити хрестики й одразу побачити прогрес, череду та нагороду. Вечірнє нагадування делікатно підказує, що череда під загрозою, але не перетворюється на потік сповіщень.

Окремої "великої" мобільної програми у застосунку немає й не потрібно: він живе прямо в браузері телефона, але ставиться іконкою й поводиться як справжній. Нічого не доводиться шукати в магазині застосунків, а мені це заощадило цілу розробку під мобільні платформи. Версії для комп'ютера я свідомо не робив: за комп'ютером вишивку ніхто не відзначає, увесь сенс у тому, щоб це було під рукою на телефоні.

Найвередливіша логіка спрацьовує на межі доби

Технічно застосунок невеликий, але ігрові механіки живуть у часі й постійно перераховуються. Череда рветься й відновлюється на межі доби, заморозка відлічує своє вікно, медаль підбиває підсумок у кінці місяця, а досягнення ловить, що за один вечір набралося рівно певне число.

Таку логіку мало один раз написати. Є безліч станів, які потрібно правильно зарахувати, при зміні умов коректно зняти назад і окремо перевірити. Звичайна форма зберігає введене значення; тут одне досягнуте число чи нова дата можуть змінити одразу череду, рослину, медаль і кілька досягнень.

Але найважче мені далося не це, а втримати баланс: система має чесно показувати результат і при цьому жодного разу не звучати як наглядач чи казино. Цим питанням я перевіряв кожну механіку, від заморозки до нижньої медалі. Не раз ловив себе на тому, що простіше зробити суворий трекер, який тисне цифрами, - але саме цього я й не хотів. Здається, на цій межі між чесністю й добротою весь проєкт і тримається.

Маленький проєкт із добре знайомими інженерними завданнями

У майстерні багато великих систем - портали, автоматизація, комп'ютерний зір. Цей проєкт набагато менший, але під ним знайомі інженерні завдання: ретельний збір даних, надійне сховище, автоматика за розкладом, сповіщення та інтерфейс під реальний щоденний сценарій. Тут усе це працює заради хобі близької людини.

Саме тому цей маленький проєкт я люблю по-особливому: він нічого не продає й нікого не масштабує. Він бере улюблену справу й дбайливо перетворює її на процес, яким приємно займатися щодня. Реєстрація в застосунку відкрита, і ним потроху користуються інші вишивальниці - але справжнє мірило успіху в нього одне: чи відкриває його щовечора мама.

Це не про продуктивність. Це про те, щоб кожен вечір за п'яльцями залишав видимий слід - і завтра хотілося сісти знову.

Олександр

Олександр

Fullstack-розробник з 8+ роками досвіду - від промислової автоматизації та роботи з обладнанням до електронного документообігу і чат-ботів. Зараз фокус на прикладному ШІ - від RAG-платформ для діалогових ботів до комп'ютерного зору.

Наш власний проєкт

Це наш проєкт, тому показуємо його внутрішній устрій без застережень - аж до архітектури та коду.