Forge is a mobile-first web app connecting athletes and personal trainers. The core value: eliminate the gap between “training plan on paper” and actual execution — athletes always know what to do today; trainers see real data and can adjust plans in time.
One account = one role, fixed at registration. No dual roles in MVP.
Trainer generates an invite code or shareable link → Athlete enters it at registration or in their profile → connection established. No search, QR, or admin flow needed.
| Layer | Choice |
|---|---|
| Frontend | Next.js + TypeScript |
| Backend / DB | Supabase (auth, database, storage) |
| Deployment | Vercel |
| Styling | Tailwind CSS |
Mock data is acceptable for early UI iterations; real Supabase data is the target for all features.
Full analysis: research/research.md · Screenshots: research/screens/ui/ · Visual: research.html
Dark theme. Strong typography. Data-first cards. No generic fitness aesthetic.
Full files: research/personas.md · research/jtbd.md · Visual: research/personas.html
Primary persona — Максим, онлайн-тренер. 5–10 клієнтів, зараз у стані Telegram + Google Sheets. Вирішує взяти Forge — і тільки після цього запрошує атлета. Google Sheets як відправна точка підтверджено (Capterra TrueCoach reviews).
Main job: Коли я веду або виконую програму дистанційно, я хочу щоб план і реальне виконання знаходились в одному місці — щоб тренер міг коригувати, а атлет завжди знав що робити сьогодні.
Топ-3 jobs для MVP:
Розташування: wireframes/ · Конвенції: wireframes/_conventions.md · Аудит: wireframes/_critique.md
| Група | Екрани | Стани |
|---|---|---|
| Атлет · Main Job (J3+J4) | today, workout, finish |
*-loading, *-empty, *-error |
| Атлет · Харчування | nutrition, add-food |
*-loading, *-empty, *-error |
| Атлет · Прогрес | progress, history, body-log |
*-empty (history, progress implied via cards) |
| Тренер | trainer-clients, trainer-athlete, trainer-workout, trainer-feedback |
*-loading, *-empty, *-error для кожного |
| Тренер · Програми | programs, program-builder, program-session, program-assign |
*-empty |
| Auth + Спільні | register, login, invite, profile |
— |
#fff, межі #ccc, заповнення #e8e8e8, текст #333. Ніяких кольорів, тіней, зовнішніх шрифтів.flex-shrink:0, main flex:1 overflow-y:auto, bottom-nav flex-shrink:0..wf-nav (224 px sidebar-дерево) + .wf-canvas (phone frame + state-nav)._empty = порожній, _error = помилка/мережа, _loading = skeleton (.sk-* класи).<a href> замість <button>; відключені — aria-disabled="true" + pointer-events:none.aria-current="page" на поточному екрані; class="planned" на ще не створених.open wireframes/today.html # або будь-який інший файл
Або GitHub Pages: https://bodyaa222.github.io/Forge/wireframes/today.html
Full sitemap: sitemap.md · User flows: flows.md · IA visual: ia.html
| Розділ | Роль | Ключові екрани |
|---|---|---|
| Аутентифікація | Всі | Реєстрація, Вхід, Запрошення атлета |
| Сьогодні | Атлет | План на день (home screen атлета) |
| Активне тренування | Атлет | Логер підходів, Таймер відпочинку, Завершення |
| Мої атлети | Тренер | Огляд клієнтів, Активність і фідбек, Деталі тренування |
| Програми | Тренер | Список програм, Конструктор, Редактор сесії, Призначення |
| Харчування | Атлет | Журнал за сьогодні, Додати їжу |
| Прогрес | Атлет | Дашборд, Тіло і вимірювання, Фото-прогрес, Фідбек тренера |
| Спільне | Обидва | Профіль і налаштування |
Атлет — bottom nav (4 tabs): Сьогодні · Харчування · Прогрес · Профіль
Тренер — bottom nav (4 tabs): Мої атлети · Програми · Запросити · Профіль
Між вкладками не більше 1 тапу до будь-якого розділу. Немає глобального пошуку або бічної панелі — модель pure bottom-nav.
Атлет, щоб залогувати перший підхід від home screen:
Сьогодні → Почати тренування → Логер → [вага + повтори] → Зберегти підхід
0 тапів 1 тап 2 тапи введення 3 тапи
3 тапи до першого збереженого підходу. Мета: не більше 3 дій між відкриттям і першим логом.
Повний flow з усіма станами (empty / error / loading / retry): flows.md → MAIN JOB — J3+J4.
Правила: voice.md · Джерело правди для кожного рядка: microcopy.md · Мова конкурентів: research/research.md → «Мова конкурентів»
Будь-який новий або змінений текст продукту пишемо за voice.md і одразу заносимо в microcopy.md (колонки «Було» / «Стало»). Якщо рядка немає в таблиці, його немає в продукті.
| Пишемо | Не пишемо | |—|—| | підхід · повтори · рекорд · коментар · атлет · тренер | сет · реп · PR · фідбек · клієнт · коуч | | програма (багатотижнева) · тренування (одне заняття) · план / факт (значення) | сесія · день як одиниця · план замість програми | | ціль (вага тіла, ккал) · БЖВ · страва · замір · код запрошення | мета · макроси · прийом їжі як запис · обміри · інвайт-код |
4 × 8 × 80 кг · 82,5 кг (кома) · 90 с · 1 год 2 хв · 1 850 ккал · 12 жовтня (рік лише не поточний) · Пн · Ср · Пт · «N з M» (Підхід 2 з 4, Тиждень 2 з 6).Кліше («Ой, щось пішло не так», «Вітаємо!», «Чудова робота!»), оклики, емодзі в системних повідомленнях, «успішно», обіцянки тіла («трансформуй себе»), докір за цифри.
Текст користувача: нотатки й коментарі тренера, назви програм, тренувань і вправ, нотатки атлета, назви страв, імена. Пишемо лише підписи й підказки навколо нього.