Открыть Formly · История изменений
Formly — мобильный фитнес-трекер для ведения тренировок, анализа прогресса и персональных AI-рекомендаций. Приложение работает как PWA, сохраняет активную тренировку офлайн и синхронизирует данные через Supabase.
- Ведение силовых и кардио-тренировок: подходы, вес, повторы, RPE и таймер отдыха.
- История, объём, 1RM, рекорды, серии тренировок и прогресс по упражнениям.
- Шаблоны, готовые программы, разминка и подсказки по прогрессии.
- AI-разбор тренировок, план тренера, генератор программ и подсказки поиска на базе Grok 4.5.
- Каталог упражнений с русскими названиями, алиасами и fuzzy-поиском.
- Офлайн-режим, PWA-установка и push-уведомления.
- Русский и английский интерфейс, адаптированный под телефон.
| Область | Технологии |
|---|---|
| Web | Next.js 16, React 19, TypeScript, Tailwind CSS 4 |
| Backend | Supabase, PostgreSQL, Row Level Security |
| AI | Grok 4.5 через шлюз CheapVibeCode |
| UX | PWA, next-intl, native SVG charts, shadcn/ui |
| Наблюдаемость | Vercel Analytics, Speed Insights, client error reports |
| Качество | Vitest, ESLint, Prettier, Knip, CodeQL, gitleaks |
Требуется Node.js 24 и npm.
git clone https://github.com/princeofscale/Formly.git
cd Formly
npm install
cp .env.local.example .env.local
npm run devПриложение откроется на http://localhost:3000.
Минимальные переменные окружения:
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
CVC_API_KEY=CVC_API_KEY — ключ шлюза CheapVibeCode, через который работают все AI-функции. Без него приложение запускается, но AI-поверхности сообщают о недоступности. Необязательный CVC_BASE_URL переопределяет адрес шлюза.
Push-уведомления дополнительно используют NEXT_PUBLIC_VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY и VAPID_CONTACT_EMAIL. Полный шаблон находится в .env.local.example.
npm run dev # локальная разработка
npm run test # тесты
npm run lint # ESLint
npm run typecheck # TypeScript
npm run format:check # проверка форматирования
npm run build # production-сборкаПеред отправкой изменений рекомендуется выполнить npm run lint && npm run typecheck && npm run test && npm run build.
SQL-миграции находятся в supabase/migrations. Применение через Supabase CLI:
supabase db pushНикогда не добавляйте секретные ключи в Git. Все env-файлы игнорируются.
- Каждый push в
mainпроверяется CI, но не деплоится автоматически. - Production-деплой запускается только публикацией GitHub Release на теге вида
v1.2.3через.github/workflows/release.yml. Пуш тега сам по себе ничего не деплоит. - Все изменения сначала добавляются в раздел
Unreleasedфайла changelog.md, а при релизе переносятся в версию.
Production: training-ar.vercel.app

