Як продукт говорить з атлетом і тренером. Принципи виведено з research/research.md (зокрема розділу «Мова конкурентів»), research/personas.md, research/jtbd.md і CLAUDE.md. Окремого competitors.md у проєкті немає: аналіз конкурентів живе в research.md. Кожен рядок інтерфейсу звіряється з цими принципами і з таблицею microcopy.md.
Бренд обіцяє «premium, motivating, athletic — not generic fitness» (CLAUDE.md). Тут ця обіцянка розписана в правила: мотивувати можна, але через дані, а не замість них.
Правило: успіх показуємо як факт із порівнянням: що, скільки і на скільки краще, ніж було.
Приклад
Новий рекорд · Присідання зі штангою 85 кг · +5 кг до 5 жовтняЗа місяць: жим лежачи 70 → 75 кгАнтиприклад
Ти неймовірна! 🔥 Новий рекорд!Client achieved personal best (сповіщення тренеру без вправи і ваги)Пояснення
research.md → «Мова конкурентів»: тренери Trainerize скаржаться на сповіщення «Client achieved personal best» у треді з назвою «Great but WHAT?», бо доводиться «go through tabs and pages and pages to find out what they achieved». Бейджі там «don’t explain what was achieved or how much the client improved». Сигнал без змісту — задокументована біль.jtbd.md → J5: атлет хоче «побачити що місяць тому я піднімав менше… щоб мати підставу продовжувати». Підставою тут є саме порівняння з минулим, а не похвала.jtbd.md → S2: атлет хоче «відповісти цифрами, а не “ну більш-менш”».personas.md → Оля: «Побачити власний прогрес у числах — що було місяць тому і що зараз».Ролі: правило однакове для обох, різниться порядок. Атлету важливі вправа, вага і різниця. Тренеру спочатку важить хто, бо в нього 8 клієнтів: Оля Ткаченко · присідання 85 кг (+5 кг). Скарга з Trainerize прийшла саме від тренерів.
Правило: в активному тренуванні продукт говорить як тренер у залі: коротко, наказовим способом, з цифрами плану перед очима, без пояснень і похвали.
Приклад
Підхід 2 з 4 · план 10 × 65 кг → кнопка Зберегти підхідНе збереглося. Дані в полях лишились. → Спробувати щеАнтиприклад
Чудово! Тепер введи кількість повторень, які ти виконав у цьому підході, і натисни кнопку нижче, щоб зберегти результат.Ой, щось пішло не так 😕Пояснення
research.md → DR1: атлети обирають логер за швидкістю між сетами: «many Redditors prefer apps that minimize time tapping between sets». Поріг терпимості — «секунди».research.md → DR3: «Demanding data entry was the most common reason people stopped using a health app». Кожне зайве слово між підходами — це те саме тертя, тільки в читанні.research.md → «Мова конкурентів»: Strong, єдиний із п’яти, хто говорить про швидкість, а не про трансформацію: «record your workouts as effortlessly and as quickly as possible».jtbd.md → J4: «записати вагу і кількість повторень за 5–10 секунд».Ролі: потрібен нюанс. Для атлета в логері правило найжорсткіше: телефон у руці між підходами, тож має бути один рядок і одна кнопка. Тренер читає за столом або з телефона між клієнтами, тож контексту може бути більше (план → факт, нотатка атлета), але дія так само одна. research.md → DR4: у Trainerize «replying to a check-in takes more taps than it should». Для тренера коротке означає «мало тапів», а не «мало слів».
Правило: вагу, калорії й пропуски називаємо нейтрально, числом і датою, без оцінки, без «треба» і без обіцянок, як зміниться тіло.
Приклад
1 850 з 2 400 ккал · білки 142 гВага 67 кг · 12 жовтня · попередній замір 66,5 кгАнтиприклад
Ти недоїдаєш! Так ти не досягнеш цілі.Якщо їстимеш так щодня, через 5 тижнів важитимеш 64 кг.Стань найсильнішою версією себеПояснення
research.md → «Мова конкурентів»: попередження MyFitnessPal «you are likely not eating enough» користувачі просять прибрати. Прогноз ваги на 5 тижнів видав людині «262 kg in 5 weeks», і тред про це називається «The prediction of future weight seems to be broken». Оцінка й прогноз — ті місця, де продукт втрачає довіру.research.md → «Мова конкурентів»: ринок обіцяє тіло («lose weight», «your strongest self», «real results»). Тут наша відмінність — у голосі: Forge не обіцяє результат, а показує, що відбувається.personas.md → «Чого ми не знаємо»: «Чи чутливий атлет до того що тренер бачить “погані” дні?». Доки відповіді немає, безпечний тон — нейтральний.personas.md → Дмитро: «не хочу щоб за мною стежили». Серед антитригерів — «якщо апка вимагає щоденний чекін, відлякує».CLAUDE.md: харчування — лише ручне введення. Дані неточні за природою, тож оцінювати їх від імені продукту нечесно.Ролі: потрібен нюанс. Атлет бачить лише факти про себе, без ярликів. Тренеру потрібен сигнал «хто відстає», це його job (personas.md → Максим: «один екран де видно всіх клієнтів і хто відстає»). Тож тренерський бік може пріоритезувати, але теж словами факту, а не характеристики: «3 дні без тренування», а не «неактивна» чи «лінується». Ярлик, який бачить тренер, не має потрапляти в інтерфейс атлета.
Правило: Forge повідомляє, що сталося, а хвалити, радити й коригувати лишає тренерові, під його іменем.
Приклад
Максим Коваль переглянув тренування · 1 коментарМаксим Коваль перегляне тренування і залишить коментар.Антиприклад
Forge пишається тобою!Твій AI-тренер радить додати 2,5 кгТримай стрік! 5 днів поспіль 💪Пояснення
jtbd.md → E2: атлет хоче, «щоб тренер побачив це без мого звіту, щоб не відчувати що стараюсь у вакуумі». Цінність у тому, що бачить людина, а не система.personas.md → Дмитро, тригер довіри: «Бачить що тренер дивиться на його дані і реагує (не просто бере гроші)». Автоматична похвала від продукту цей сигнал розмиває.research.md → Гіпотеза 2 (Noom, Future Pro): асинхронного текстового коментаря тренера достатньо, тобто мотивувальний голос у цій моделі належить людині.research.md → «Мова конкурентів»: Trainerize продає мотивацію як механіку («Stay motivated with streaks, badges, and personalized reminders»), а Fitbod і MyFitnessPal — як «AI trainer» / «AI Coach». DR4: у Trainerize через перевантаження сповіщеннями «clients turn all notifications off in the first month».Ролі: ролі тут різні. Для атлета голос тренера — основний текст на екрані, а Forge говорить тихо навколо нього: дата, ім’я, статус. Для тренера Forge — інструмент: підписи й підказки, які допомагають написати коментар, але ніколи не пишуть його за тренера і не підставляють готових фраз-похвал. Текст тренера ми не переписуємо (див. «Текст користувача» в microcopy.md).
research.md → Гіпотеза 5).research.md → «Мова конкурентів» → «Чого не знайшли»). Порожній вигук і так покрито принципами 1 і 4, тож окреме правило без даних не беремо.Одне поняття — одне слово. Кожен рядок закриває розбіжність, позначену в microcopy.md (код у дужках). Слова беремо з мови персон і ресерчу (research/personas.md, research/jtbd.md, CLAUDE.md, flows.md), нових не вигадуємо. [?] означає, що в ресерчі немає живої мови персон на цю тему і рішення спирається на інвентар. Його варто перевірити на інтерв’ю.
Словник діє для тексту Forge. Текст користувача (нотатки, коментарі, назви програм і вправ) ми не правимо: якщо тренер пише «сет», «реп» чи «PR», це його мова (див. «Текст користувача» в microcopy.md).
| Поняття | Пишемо | Не пишемо | Чому |
|---|---|---|---|
| Одне виконання вправи (T1) | підхід | сет | Так атлет описує свій головний момент: «Коли я відпочиваю між підходами» (jtbd.md → J4), «Зафіксувати підхід» (personas.md → Оля). Інтерфейс уже каже «підхід» у 54 рядках. «Сет» у персонах теж живе («між сетами»), але це сленг залу: його пише тренер у своїх нотатках, а не Forge. |
| Кількість рухів у підході (T2) | повтори | реп, повторення (у підписах), «повт» | Так звучить головний флоу: «ввести вагу і повтори» (CLAUDE.md → Main flow, flows.md). «Повторення» — книжна форма, «повт» — обрубок. У компактному записі слова немає взагалі: 8 × 80 кг (див. «Одиниці й формати»). |
| Багатотижнева річ, яку тренер складає й призначає (T3) | програма | план, цикл | Так тренер називає свою роботу: «Коли я складаю нову програму для клієнта» (jtbd.md → J1), і так названо його вкладку («Програми», IA). Оля у своїй мові каже «план у PDF», але одне слово з обох боків важливіше: тоді тренер і атлет говорять про те саме. |
| Заняття на один день, і призначене, і виконане (T3) | тренування | сесія, день (як одиниця програми), план (на сьогодні) | Обидві персони кажуть саме так: «Коли я прийшов на тренування» (J3), «відпахав важке тренування» (E2), «коментар до тренування за 2 хвилини» (Максим). «Сесія» — слово конструктора, не залу. «День» лишається лише днем тижня. |
| Призначені значення проти фактичних (T3, T4) | план / факт | ціль (для значень підходу) | Пара з main job: «щоб план і реальне виконання знаходились в одному місці» (jtbd.md → Main Job). Тренер у trainer-workout уже читає «план vs факт». Логер атлета показує ті самі числа, тож і слово те саме: план 10 × 65 кг. |
| Те, до чого атлет іде (вага тіла, ккал на день) (T4) | ціль | мета, ліміт, норма | «Ціль» уже стоїть у прогресі («Ціль: 70 кг»), і в CLAUDE.md атлет «views… goals». «Мета» в інвентарі не трапляється. «Ліміт» і «норма» звучать як обмеження й докір (див. принцип 3). |
| Найкращий результат у вправі (T5) | рекорд | PR, особистий рекорд (PR) | Рекорд найчастіше читає Оля: три місяці з тренером, після того як «самостійні тренування зайшли в глухий кут» (personas.md). Їй потрібне слово без перекладу. «PR» — мова залу й тренера, і в його тексті вона лишається. [?] Живої мови атлетів про рекорди в ресерчі немає. |
| Білки, жири, вуглеводи разом (T6) | БЖВ (назва групи); підписи — Білки · Жири · Вуглеводи | макроси, «Вугл» | Записи страв уже кажуть «Б 12 г · Ж 6 г · В 62 г», тож назва групи складається з тих самих літер, без нового слова. «Макроси» — калька з англійського «macros» (Lifesum, research.md → патерн 3). [?] Як Оля називає БЖВ, ресерч не каже. |
| Відповідь тренера на тренування чи тиждень (T7) | коментар | фідбек, відгук | Так формулює свою роботу тренер: «Залишити коментар до тренування за 2 хвилини» (personas.md → Максим), «щоб наступний коментар був по суті» (J2). «Фідбек» — англіцизм, і саме слово «коментар» уже стоїть у полі, яке тренер заповнює («Твій коментар»). |
| Порада тренера до програми, тренування чи вправи (до виконання) | нотатка | — | Розбіжностей немає (microcopy.md): «Нотатка тренера», «Нотатка після тренування». Нотатка йде до тренування, коментар — після. Це різні речі, і слова теж різні. |
| Те, що атлет з’їв і записав (T8) | страва | їжа, прийом їжі (як запис) | Атлет вводить «Назву страви» (add-food), тож і запис, і кнопка мають називатися так само: «Додати страву». «Прийом їжі» лишається лише групою «Сніданок · Обід · Вечеря · Перекус». [?] Персони про харчування своїми словами не говорять. |
| Поле можна лишити порожнім (T9) | необов’язково | опціонально | Вже стоїть у 2 з 3 місць. «Опціонально» — книжне слово. |
| Назва вправи (T10) | як ввів тренер, повністю | скорочення від Forge («Присідання» замість «Присідання зі штангою») | Назву вводить тренер (program-session). Якщо Forge її скорочує, у різних місцях виходять дві різні вправи. |
| Людина, яку веде тренер (R) | атлет | клієнт, підопічний | Цим словом атлет називає себе під час реєстрації («Я — атлет»), і так тренерські вкладки звуть його в IA («Мої атлети»). Максим у своїй мові каже «клієнти» (personas.md), але це слово бізнесу, і атлет теж його прочитає. Дмитро довіряє, коли тренер «реагує (не просто бере гроші)». «Клієнт» лишається в тексті тренера (bio). «Підопічний» не трапляється ніде. |
| Людина, яка веде | тренер | коуч, AI-тренер | Розбіжностей немає. «Коуч» і «AI Coach» — мова конкурентів (research.md → «Мова конкурентів»), не наша. |
| Що атлет вводить, щоб підключитися (не позначено, кандидат зі словника) | код запрошення | інвайт-код, інвайт | Дія в інтерфейсі вже «Запросити атлета», тож іменник має бути з того самого кореня. Тренер хоче, щоб онбординг клієнта був таким, що «не треба пояснювати» (personas.md → Максим, тригер довіри), а українське слово пояснювати не треба. [?] Зараз у 35 екранах стоїть «інвайт-код», і розбіжності немає, але це англіцизм, а правило для англіцизмів одне (див. нижче). |
| Вимір тіла | замір | вимір, обміри (у підписах) | Кнопки й заголовки вже кажуть «замір» («Записати замір тіла», «Попередній замір»). |
| Дія | Пишемо | Не пишемо | Чому |
|---|---|---|---|
| Зберегти введене (D1, D2, D3) | Зберегти + що: «Зберегти підхід», «Зберегти страву», «Зберегти замір» | «Зберегти» без об’єкта, «Записати», «Залогувати», «Готово», «Далі» | «Зберегти» — слово Олі: тригер довіри — «одна кнопка “зберегти сет”» (personas.md). Об’єкт у кнопці потрібен, щоб між підходами не перечитувати екран (принцип 2). «Залогувати» — англіцизм. |
| Відкрити форму, щоб щось додати (D1, D2) | Додати + що: «Додати страву», «Додати замір» | «Додати прийом їжі», «Додати їжу», «Записати замір» | Вхід і кнопка у формі говорять про той самий предмет: «Додати страву» → «Зберегти страву». |
| Почати тренування (D9) | Почати тренування | Розпочати, Старт | Розбіжностей немає, і так сформульовано головний флоу (CLAUDE.md). Статус програми теж без «розпочата»: «з 29 вересня». |
| Відкрити деталі тренування (D4) | Переглянути | Деталі →, Деталі тренування → | Одне дієслово на обох боках. На тренерському боці «Переглянути» вже переважає. |
| Повернутися на головний екран атлета (D5) | До «Сьогодні» | На головну, На Сьогодні →, Назад до плану | У атлета немає «головної». Є вкладка «Сьогодні», точка входу J3. Кнопка називає її так само. |
| Створити програму (D6) | Створити програму | + Нова програма | Дієслово, як і в усіх інших кнопках. Порожній стан уже каже «Створи першу». |
| Коментар тренера (D7) | вхід Залишити коментар, відправка Надіслати коментар | Залишити фідбек, Надіслати фідбек | Дві різні дії, слово одне (див. «коментар»). |
| Запросити атлета (D8) | [+] Запросити атлета | «Запросити атлета [+]» | Іконка завжди перед текстом, як у «[copy] Скопіювати код» і «[↻] Згенерувати новий код». |
| Призначити програму (D11) | Призначити програму — і в картці програми, і на екрані призначення | Підтвердити призначення, «Призначити», «Призначити знову» | Одне дієслово з об’єктом. «Зберегти і призначити» в конструкторі лишається, бо там дві дії. |
| Змінити програму чи тренування | Редагувати | Змінити, Налаштувати | Кнопка стоїть у картці, де об’єкт уже названо. |
| Видалити вправу з тренування | Видалити вправу (з підтвердженням) | видалити, ✕ без тексту | «Дієслово + об’єкт», як «Додати вправу». Діалог — за «Мікрокопі → Небезпечна дія». |
| Код запрошення | Скопіювати код · Згенерувати новий код (з підтвердженням) | Копіювати, Оновити код | Об’єкт той самий, що й у «Ввести код запрошення» в атлета. |
| Повторити після помилки (D10) | кнопка Спробувати ще; текст «Перевір з’єднання і спробуй ще раз.» | «…з інтернетом…» в одних місцях і без нього в інших | Один текст на всі помилки мережі. Коротша версія вже є в логері, де читають між підходами (принцип 2). Заголовок помилки має дві форми, і кожна для свого випадку: не прийшло — «Не вдалося завантажити + що»; не пішло — «Що + не збережено / не надіслано». |
Стрілка «→» не входить у назву дії: «Додати страву», а не «Додати страву →». Стрілка чи шеврон — іконка посилання, її малює дизайн.
| Що | Пишемо | Не пишемо | Примітка |
|---|---|---|---|
| Вага (U1) | 80 кг, 82,5 кг; у підписі поля «Вага, кг» |
kg, «Вага (кг)», «Кг» | Число й одиниця через нерозривний пробіл. |
| Десяткові (U3) | кома: 82,5; нуль після коми не пишемо: 67 кг, не 67,0 кг |
82.5, 67.0, 0.0 | Українська норма. Підказку в полі див. у «Мікрокопі» → «Поле форми». |
| Запис призначення (U2) | 4 × 8 × 80 кг (підходи × повтори × вага); один підхід — 8 × 80 кг |
«4 підходи · 8 повторень · 80 кг», 4 × 8 · 80 кг, 8→8, x замість × |
Нотація з тренерських таблиць, з якої приходить Максим (personas.md: Google Sheets). У логері коротко: план 10 × 65 кг. |
| План проти факту (U2) | план 8 × 80 кг · факт 8 × 82,5 кг |
80 кг → 82.5 кг, 8→8 |
Стрілки не кажуть, що з чим порівнюють. Слова «план / факт» кажуть. |
| Відпочинок | 90 с |
сек, s, 1:30 | Завжди в секундах, так тренер задає його в програмі. |
| Тривалість тренування (U5) | 1 год 4 хв, 58 хв |
01:04:32, 58:30, 01:02 |
Запис 58:30 можна прочитати і як хв:с, і як год:хв. Секундомір, що йде в логері, лишається 00:23:47. |
| Калорії (U4) | 1 850 ккал, 1 850 з 2 400 ккал |
kcal, 1850 (і в a11y-підписах так само) |
Тисячі ділимо пробілом. |
| Білки, жири, вуглеводи | 142 г; у записі страви — Б 12 г · Ж 6 г · В 62 г |
«Вугл» | Літери Б/Ж/В дозволені лише в компактному рядку, де над ним є повні підписи. |
| Заміри тіла | 78 см |
||
| Дати (U6) | 12 жовтня; рік — лише якщо не поточний: 12 жовтня 2025; день тижня — лише в шапці «Сьогодні»: Понеділок, 12 жовтня |
12 жовт, 2026-10-12, вер–жовт 2026, рік поточного року |
ISO-дата живе лише всередині нативного поля вибору дати. |
| Дні тижня (U7) | Пн · Ср · Пт; у перемикачі днів — Пн Вт Ср Чт Пт Сб Нд |
П, С, П | Однолітерні дні неоднозначні: П — понеділок і пʼятниця, С — середа і субота. |
| Лічильники (U8, U9) | Підхід 2 з 4, Тиждень 2 з 6, 18 з 20 підходів, 3 тренування на тиждень |
2 / 4, 2/6, тиж 1/8, 3 дні/тиж |
Одна форма «N з M» для всього. Читається вголос так само, як написано. |
| Час доби | 08:15 |
Розбіжностей немає. |
personas.md). [?] Як тренери звертаються до клієнтів, ресерч прямо не перевіряв.invite «Ви підключені» виправляємо (microcopy.md → A). [?] Чи не прозвучить «ти» фамільярно для тренера-професіонала, ресерч не перевіряв. Питання для інтерв’ю з Максимом.microcopy.md → I: «Ти ще не підключений» для Олі). [?] Поля статі в реєстрації немає, тож поки що працює лише безособова форма.Правило: якщо в нашому інтерфейсі вже є українське слово для поняття, англіцизм не пишемо. Мова залу («сет», «реп», «PR») живе в тексті тренера, а не в тексті Forge.
| Дозволено в тексті Forge | Чому |
|---|---|
| Email (підпис поля) | Стандартна назва поля, перекладати її нема на що. |
| Forge, Telegram, SMS | Власні назви. |
| Заборонено в тексті Forge | Пишемо замість | Де може жити |
|---|---|---|
| сет | підхід | нотатки й коментарі тренера |
| реп | повтори | нотатки й коментарі тренера |
| PR | рекорд | нотатки й коментарі тренера |
| фідбек | коментар | — |
| інвайт-код, інвайт | код запрошення | — |
| залогувати, лог | зберегти, записи | — |
| Bio | Про себе [?] | — |
| макроси | БЖВ | — |
| коуч, AI-тренер, check-in, стрік | тренер; решти понять у продукті немає | — |
Цих рядків Forge не пише ніколи: ні в системних повідомленнях, ні в станах, ні в підказках. Кожен пункт спирається на принципи вище. Позначено, що з цього вже трапилось в інвентарі (microcopy.md), а що забороняємо наперед.
В інвентарі їх не знайдено (microcopy.md → A). Забороняємо наперед, бо це перше, що з’являється в текстах, згенерованих «на автоматі».
| Не пишемо | Пишемо | Де |
|---|---|---|
| Ой, щось пішло не так 😕 | Не вдалося завантажити тренування. Перевір з’єднання і спробуй ще раз. | athlete-today-error (цей рядок уже правильний) |
| Ласкаво просимо до Forge! | Введи код запрошення від тренера, щоб отримати програму. | перший екран атлета без тренера |
| Вітаємо! Ти завершив тренування! | Тренування завершено · 1 год 4 хв · 18 з 20 підходів | finish, шапка |
| Чудова робота! | 18 з 20 підходів · новий рекорд у присіданнях | finish, підсумок |
| Ти неймовірний! | Новий рекорд · Присідання зі штангою 85 кг · +5 кг до 5 жовтня | finish, рекорд |
Чому: принцип 1. Вигук не каже, що сталося, і саме на таке «Great but WHAT?» скаржаться тренери Trainerize (research.md → «Мова конкурентів»). Похвала належить тренерові (принцип 4).
| Не пишемо | Пишемо | Де |
|---|---|---|
| Розпочни свій шлях до ідеального тіла | Тренера ще немає. Введи код запрошення, щоб отримати програму. | athlete-today-empty |
| Трансформуй себе | Вага 67 кг · +3 кг за 8 тижнів | progress |
| Стань найсильнішою версією себе | Присідання зі штангою: 80 → 85 кг за місяць | progress, рекорди |
Чому: принцип 3. Обіцянки тіла — спільна мова ринку («lose weight», «your strongest self», «real results», research.md → «Мова конкурентів»). Наша відмінність у тому, що ми показуємо, що вже відбулося, і нічого не обіцяємо. Мотивує число з порівнянням (J5: «побачити що місяць тому я піднімав менше»).
| Не пишемо | Пишемо | Де |
|---|---|---|
| Ти перевищив ліміт калорій! | 1 950 з 1 800 ккал | nutrition, підсумок дня |
| Ти недоїдаєш! | 1 100 з 2 400 ккал | nutrition, підсумок дня |
| Ти пропустила 3 тренування | Останнє тренування — 9 жовтня | атлет, today |
| Іван лінується / неактивний | 3 дні без тренування | тренер, trainer-clients |
Про «Завтра можна відкоригувати» [?]. Пропозицію з брифу («1 950 з 1 800 ккал. Завтра можна відкоригувати») я не беру. Це порада щодо харчування, а за принципом 4 радить тренер, не Forge. До того ж вона все одно оцінює день як помилку (принцип 3). Попередження MyFitnessPal «you are likely not eating enough» користувачі просять прибрати саме тому, що продукт оцінює їх замість людини. Число без коментаря вже показує перевищення. Як його виділити візуально, вирішує дизайн, а не текст. Якщо тест покаже, що атлетам потрібна підказка, вона має йти від тренера (у його нотатці чи коментарі). [?] Перевірити на інтерв’ю з Олею.
Чому: принцип 3. Харчування в Forge — лише ручне введення (CLAUDE.md), тож дані неточні за природою. Чутливість атлета до того, що тренер бачить «погані» дні, — відкрите питання (personas.md). Тренер отримує сигнал фактом, атлет не отримує ярлика.
| Не пишемо | Пишемо | Де |
|---|---|---|
| Підхід успішно збережено! 💪 | Підхід 3 з 4 збережено · відпочинок 90 с | workout, шапка таймера відпочинку |
| Коментар успішно надіслано! | Коментар надіслано | trainer-feedback |
| Новий рекорд! Присідання зі штангою: 82.5 кг | Новий рекорд · Присідання зі штангою 82,5 кг · +2,5 кг до 5 жовтня | finish, рядок PR-плашки (microcopy.md #212) — є в інвентарі |
| 🔥 5 тренувань цього місяця | 5 тренувань у жовтні | progress |
Правила:
Правила за типами елементів. Кожне правило звірене з «Принципами», «Словником» і «Забороненим» вище, а приклади написано словами словника. Де приклад із брифу розходився зі словником, я виправив його й позначив: «з брифу → як у нас». Стани взято з wireframes/_screens.md. Позначка «Ролі» в кожному правилі каже, чи воно однакове для атлета й тренера.
Правило: дієслово дії + об’єкт зі словника, щоб з кнопки було видно результат. Одна дія — одне формулювання на всіх екранах (див. «Словник» → «Дії»).
Приклад: Зберегти підхід · Почати тренування · Призначити програму
Не пишемо: ОК · Далі · Готово · Підтвердити · Зберегти (без об’єкта)
Звірка:
Спробувати ще. Об’єкт уже названо в тексті помилки над нею.Ролі: правило однакове, різні набори кнопок.
Зберегти підхід неактивна, поки поля порожні (_screens.md → Логер, стан «порожній»), і текст кнопки при цьому не змінюється.Зберегти і призначити у конструкторі. Кнопки Призначити програму, Створити програму, Запросити атлета, Залишити коментар є лише в тренера.Правило: заголовок каже, що це за місце, іменником зі словника. Для вкладки — назва вкладки. Для екрана об’єкта — назва цього об’єкта.
Приклад:
Сьогодні · Мої атлети · Програми · Харчування · ПрогресОля Ткаченко · Силовий цикл — осіньАктивне тренування · Нова програма · Нова страва · Новий замір (форма називається «Нова + предмет», кнопка входу — «Додати + предмет»)Не пишемо: Головна · Дашборд · Мої клієнти · План тренування
Звірка:
microcopy.md → I: зараз вкладка «Атлети», а заголовок «Мої атлети»).Словник → T10). Довга назва переноситься на другий рядок, а не обрізається трьома крапками.Ролі: правило однакове, але в атлета немає «головної»: його головний екран — Сьогодні, тобто J3, точка входу щодня. Тренерський головний екран — Мої атлети.
Правило: три частини, у кожної своя робота.
Приклад:
| Частина | Атлет · body-log | Тренер · program-session |
|—|—|—|
| Підпис | Вага тіла, кг | Відпочинок, с |
| Підказка | Наприклад, 67,5 | Наприклад, 90 |
| Помилка | Вкажи вагу числом, наприклад 67,5 | Вкажи відпочинок у секундах, наприклад 90 |
Не пишемо: Вага (кг) · Невірне значення · Помилка валідації · Поле обов'язкове (без того, що саме ввести)
Звірка:
(необов'язково) (Словник → T9).Ролі: потрібен нюанс.
65 у полі «Вага, кг», 10 у полі «Повтори». Найчастіше атлет робить саме план, тож підказка заодно показує, що вводити (J4: «за 5–10 секунд»; принцип 2). Помилку валідації в логері здебільшого не показуємо: поля числові, а кнопка неактивна, поки вони порожні (_screens.md).Що змінити наступного разу, на що звернути увагу. Сам текст належить тренерові («Текст користувача» в microcopy.md).Правило: два речення та одна дія: чому порожньо → що буде далі або що зробити. Якщо зробити може лише інша людина, кажемо, хто саме і коли. Кнопку даємо лише тоді, коли користувач справді може щось зробити.
Приклад:
Тренера ще немає. Введи код запрошення від тренера, щоб отримати програму. + Ввести код запрошенняНа сьогодні тренування немає. Тренер ще не додав його в програму. (без кнопки: зробити це може лише тренер)Ще немає підключених атлетів. Запроси атлета: коли код запрошення буде введено, ти зможеш призначити програму. + [+] Запросити атлетаНе пишемо: Тут поки порожньо 🙈 · Розпочни свій шлях! · Немає даних
Звірка:
_screens.md вони окремі: (a) без тренера — дія «ввести код»; (b) тренер є, програми немає — чекаємо тренера. Тому розділяю їх у прикладі.athlete-today-empty (microcopy.md → I) не беремо: чату в MVP немає (CLAUDE.md).Ролі: потрібен нюанс. У атлета порожнеча часто залежить від тренера, тож замість кнопки текст чесно каже «чекаємо тренера». У тренера порожнеча майже завжди має дію, бо він ініціює все (personas.md: тренер запрошує першим).
Правило: що не вдалося (дієслово в минулому + об’єкт) → що робити → кнопка повтору. Якщо дані збережено локально, кажемо про це. Без вибачень, жартів і «Ой».
Приклад:
workout-error: Підхід не збережено. Перевір з'єднання і спробуй ще раз. Дані в полях лишились. + Спробувати щеtrainer-feedback-error: Коментар не надіслано. Перевір з'єднання і спробуй ще раз. Текст збережено. + Спробувати щеНе пишемо: Ой, щось пішло не так 😕 · Вибач, сталася помилка · Error 500 · Щось не так з інтернетом? 🤔
Звірка:
_screens.md фіксує тупик Z4: якщо атлет відмовляється від повтору, дані підходу втрачено, тож обіцяти «збережено» там, де їх не зберігаємо, не можна.Ролі: правило однакове. Різниться ціна помилки. Атлет у залі, між підходами: повтор має бути одним тапом без навігації (_screens.md → «Примітки»), а текст коротким. Тренер зазвичай пише довгий коментар, тож для нього найважливіше речення — «Текст збережено».
Правило: за замовчуванням мовчимо, а скелетон повторює форму екрана. Якщо текст потрібен (довге завантаження, a11y-підпис для скринрідера), кажемо, що саме вантажиться, словами словника.
Приклад: Завантажуємо тренування на сьогодні (a11y-підпис скелетона на athlete-today-loading)
Не пишемо: Завантаження... · Зачекай, магія відбувається ✨ · Майже готово!
Звірка:
_screens.md теж каже «Завантажуємо план…», це місце оновлюється разом із вайрфреймами.Ролі: правило однакове. [?] Після скількох секунд показувати текст на екрані, а не лише в a11y-підписі, ресерч не каже.
Правило: факт (що збережено, з числами) + наступний крок. Без «успішно», окликів і святкування словами. Якщо дані просто з’явилися на своєму місці, окреме повідомлення не потрібне.
Приклад:
Підхід 3 з 4 збережено · відпочинок 90 с. Це шапка таймера відпочинку, який і є наступним кроком (_screens.md → Логер: окремого екрана успіху немає).finish: Тренування завершено · 1 год 4 хв · 18 з 20 підходів, нижче — Максим Коваль перегляне тренування і залишить коментар.Програму призначено · Оля Ткаченко · з 19 жовтняНе пишемо: Успішно збережено! · Вітаємо! 🎉 · Ти молодець!
Звірка:
finish наступний крок — реакція тренера, названа його іменем._screens.md просить для finish «відзнаку: анімація, PR badge, час тренування». Святкує дизайн (анімація, плашка), а не слова. Текст лишається фактом.Ролі: потрібен нюанс. Атлет має один справжній екран успіху на все MAIN JOB (finish), і там наступний крок — тренер. Тренер отримує коротке підтвердження про те, що побачить атлет (Програму призначено · Оля Ткаченко): для нього успіх означає, що інформація дійшла до людини.
Правило: «Новий рекорд» + повна назва вправи + число + порівняння з попереднім рекордом і його датою. Без вигуків і оцінок людини.
Приклад: Новий рекорд · Присідання зі штангою 100 кг · +5 кг до 5 жовтня
Не пишемо: Новий рекорд! Присідання зі штангою: 82.5 кг (зараз в інвентарі, #212) · Ти неймовірний! 🔥 · Client achieved personal best
Звірка:
Ролі: потрібен нюанс, бо ті самі дані читаються по-різному.
Новий рекорд · Присідання зі штангою 100 кг · +5 кг до 5 жовтня. Вправа і різниця йдуть першими (J5).Оля Ткаченко · новий рекорд · Присідання зі штангою 100 кг (+5 кг). Першим іде ім’я, бо в нього 8 атлетів (принцип 1 → Ролі).Правило: до натискання — питання з назвою об’єкта → що станеться і з ким → чи можна повернути. Кнопка підтвердження повторює дієслово дії, а кнопка відмови — Скасувати.
Приклад (тренер): Видалити програму «Силовий цикл — осінь»? Вона зникне в 2 атлетів, яким призначена. Повернути не вийде. + Видалити програму / Скасувати
Інші небезпечні дії, які вже є в макетах:
invite: Згенерувати новий код? Попередній код FORGE-7X2K перестане працювати, і атлети, які ще його не ввели, не зможуть підключитися. + Згенерувати новий код / Скасуватиworkout: Завершити тренування? Збережено 16 з 20 підходів. Решта не потрапить у запис. + Завершити тренування / Продовжитиprofile: Вийти з акаунту? + Вийти / Скасувати. Нічого не втрачається, тож попередження не потрібне, лише підтвердження.Не пишемо: Ви впевнені? · Так / Ні · Цю дію неможливо скасувати! (без того, що саме зникне)
Звірка:
Так нічого не каже, тож повторюємо дію (див. «Кнопка»).program-session). Приклад показує форму для майбутнього екрана.Ролі: потрібен нюанс. Найнебезпечніші дії має тренер, бо вони зачіпають інших людей (програма, код запрошення). Тому в його попередженні завжди названо, кого це торкнеться. Дії атлета зачіпають лише його власні дані, і найризиковіша з них — завершити тренування з незбереженими підходами (тупик Z4 у _screens.md). Там друга кнопка — Продовжити, а не Скасувати, бо повернення до логера і є бажаною дією.
voice.md повний: Принципи → Словник → Заборонене → Мікрокопі. Новий текст продукту пишемо за ним і звіряємо з microcopy.md. Рядки, що порушують правила, виправляються там, а не тут.