WHOOP PWA — персональная аналитика и рекомендации — превью
Кейсы
Web App AI-агент

WHOOP PWA — персональная аналитика и рекомендации

Веб-приложение (PWA) с WHOOP OAuth 2.0: Recovery, сон, Strain, история тренировок и рекомендации на русском + AI-чат; кеширование запросов к API, деплой Nginx + systemd.

2026 3 мин. чтения
Клиент WHOOP PWA
Срок 3 недели
Стек FastAPI · PostgreSQL · SQLAlchemy 2 · Alembic · JavaScript
Результат Готовое к продакшену приложение под свой домен — с PWA-установкой, AI-чатом и документацией по окружению.
  • только приложение (англ.) PWA на русском + AI Chat
    Данные WHOOP в вебе
  • 5 модулей: Recovery, Сон, Strain, История, AI
  • OAuth 2.0 с refresh и блокировкой токенов

Задача

WHOOP — трекер восстановления и нагрузки со своим мобильным приложением исключительно на английском. У заказчика была задача: получить персональный веб-дашборд с данными WHOOP на русском языке, доступный с любого устройства, устанавливаемый как PWA, с AI-ассистентом для интерпретации показателей.

Публичного веб-интерфейса WHOOP не предоставляет — нужна полноценная интеграция через OAuth 2.0 и WHOOP API v2.

Решение

WHOOP OAuth 2.0 и управление токенами

Интеграция реализована по стандарту OAuth 2.0 Authorization Code Flow. Особое внимание уделено надёжности refresh-цикла при работе нескольких воркеров: токен обновляется с блокировкой на уровне БД (SELECT ... FOR UPDATE), что исключает гонку при параллельных запросах.

Пользователь → FastAPI (OAuth redirect)
  → WHOOP Authorization Server
  → Callback → обмен кода на токен
  → PostgreSQL (access_token, refresh_token, expires_at)
  → Автообновление с advisory lock

Дополнительно: безопасная работа с сессионными cookie под Safari и iOS (атрибут SameSite, Secure, HttpOnly), защита от типичных уязвимостей OAuth (state-параметр, PKCE-совместимость).

Кеширование API

Все ответы WHOOP API кешируются в PostgreSQL с TTL по типу данных:

ДанныеTTL кеша
Recovery (текущий)30 мин
Сон (последний цикл)1 ч
Strain (текущий день)15 мин
История (7–30 дней)6 ч

Это снижает число запросов к WHOOP и убирает задержки при повторных открытиях дашборда.

Экраны дашборда

Recovery — кольцевой индикатор восстановления (0–100%), цветовая зона (зелёный / жёлтый / красный), HRV, частота пульса в покое, описание состояния на русском.

Сон — продолжительность, стадии (REM, Deep, Light, Awake), эффективность сна, баллы WHOOP Sleep Performance.

Strain — нагрузка за день, пиковая ЧСС, зоны ЧСС, каллории, число активностей.

История — лента показателей за выбранный период с графиком тренда; скачать данные в CSV.

Рекомендации — автоматические советы: «Нагрузка высокая, Recovery 49% — приоритет на восстановление», «Сон ниже нормы на 1.2 ч — ляг раньше».

AI Chat

Интегрирован AI-ассистент, который видит текущие показатели пользователя и отвечает на вопросы о здоровье и тренировках в контексте реальных данных WHOOP:

  • «Можно ли тренироваться сегодня?»
  • «Почему у меня низкий Recovery третий день подряд?»
  • «Что значит HRV 42?»

Все ответы на русском, без спортивного жаргона.

PWA: установка на устройство

Приложение работает как полноценный PWA:

  • manifest.json — название, иконки, display: standalone, theme_color
  • Service Worker — кеш статики, offline-заглушка, push-уведомления (готово к подключению)
  • Устанавливается на главный экран iPhone / Android одним тапом

Кириллица и JSON

Все ответы API приводятся к UTF-8 на уровне FastAPI middleware; кириллические метки, названия зон и рекомендации не ломают JSON-сериализацию (ensure_ascii=False).

Деплой

VPS (Ubuntu)
  systemd unit (uvicorn workers, автозапуск)
  Nginx (reverse proxy, HTTPS, HSTS)
  Let's Encrypt (certbot auto-renew)
  PostgreSQL 16
  Alembic (миграции при деплое)

Заказчик получает .env.example, инструкцию по регистрации WHOOP OAuth App и скрипт первоначальной настройки. Обновление — git pull && systemctl restart app.

Результат

ПоказательДоПосле
Язык интерфейсаТолько английскийРусский
Доступ к даннымТолько мобильное приложениеВеб + PWA на любом устройстве
Интерпретация показателейНетAI-чат в контексте текущих данных
Нагрузка на WHOOP APIКеш снижает запросы в 5–10 раз
Надёжность токеновБлокировка гонки, автообновление

Нужен веб-дашборд под свой трекер или сервис с OAuth-интеграцией? Напишите — обсудим задачу.

ОООООоооооочень быстро сделал. Я доволен !!

— svyat007 Kwork
Итог

Готовое к продакшену приложение под свой домен — с PWA-установкой, AI-чатом и документацией по окружению.

Следующий кейс

Контент-завод 2.0: от одного клиента до мульти-клиентской платформы

Мульти-клиентский конвейер SEO-контента: онбординг, Wordstat, AI-семантика, брендовый тон, картинки, Telegram-публикация и учёт расходов.