Skip to content

Rendles/brain_tone

Repository files navigation

BrainTone · «Тонус»

Тонус для мозга. Честно о том, что работает.

Мобильное веб-приложение с короткими (10–15 минут в день) адаптивными когнитивными задачами. Пять доменов: скорость обработки, внимание, рабочая память, гибкость, рассуждение. Главное отличие от Lumosity/Peak/Elevate — радикальная честность: приложение прямо объясняет, что наука знает (и чего не знает) о когнитивных тренировках, и не обещает «сделать умнее».


Возможности

  • 🎯 Ежедневная тренировка — 4 задачи из разных доменов, самый слабый домен включается всегда.
  • 📈 Адаптивная сложность — взвешенная up-down «лестница» держит задачу на грани ваших возможностей.
  • ⏱️ Честные измерения — время реакции считается через performance.now() внутри двойного requestAnimationFrame; во время попытки нет ни сети, ни лишних рендеров, ни записей в storage.
  • 🧠 Карточка науки у каждой игры — что об этом известно исследованиям, без маркетинговых обещаний.
  • 📊 Тонус-индекс — прогресс по каждому домену (EMA) и общий индекс, недельные отчёты.
  • 🌱 Раздел «Больше, чем игры» — напоминание, что сон, аэробная нагрузка и новые навыки влияют на мозг сильнее любых игр.
  • 📱 Mobile-first PWA — манифест, сервис-воркер, офлайн-дружелюбное хранение.

Игры

Игра Домен
Реактивное поле Скорость
Струп Внимание
Go / No-Go Внимание
N-back Рабочая память
Матрица памяти Рабочая память
Переключатель Гибкость
Закономерности Рассуждение
Ассоциации Нестандартное мышление

Каждая игра — изолированный модуль (src/games/<game>/) с чистым детерминированным генератором ((level, rng) → trial), уровневыми таблицами из спецификации и тестами, воспроизводимыми по сиду.

Технологии

Next.js 15 (App Router) · React 19 · TypeScript (strict) · Tailwind CSS · Zustand · Zod · Vitest · Playwright

Без сторонних PRNG: mulberry32 + FNV-1a написаны вручную, каждая сессия воспроизводима по сиду.

Быстрый старт

npm install
npm run dev        # http://127.0.0.1:3030

Проверки:

npm run build      # production-сборка
npm run lint       # eslint --max-warnings=0
npm run typecheck  # tsc --noEmit
npm run test       # vitest (юнит)
npm run e2e        # playwright (мобильный chromium)

Режимы работы

Локальный режим (по умолчанию)

Без единой переменной окружения приложение работает полностью local-first: весь прогресс хранится в localStorage браузера, сетевых запросов нет, вход и регистрация скрыты. В этом режиме проект можно деплоить на Vercel как есть.

Полный режим (аккаунты и сравнение)

Включается флагом NEXT_PUBLIC_ACCOUNTS_ENABLED=1 и требует backend-окружение (см. .env.example): Neon Postgres (DATABASE_URL) и Auth.js (AUTH_SECRET). Добавляет профили с никнеймом, облачную синхронизацию прогресса, перцентили по доменам и недельную лигу.

Архитектура

src/
├── engine/      # игронезависимое ядро: staircase, scoring, rng, scheduler, timing
├── games/       # изолированные модули игр (GameModule)
├── components/  # GameSession — runtime сессии (rules → countdown → trials → result)
├── data/        # персистентность за интерфейсом репозитория (localStorage / API)
├── content/     # все строки UI и научные тексты
└── app/         # маршруты App Router (+ /api при включённом backend)

Ядро (engine/) ничего не знает о конкретных играх — каждая игра реализует контракт GameModule, а GameSession прогоняет полный цикл сессии для любой из них.

Документация

Проект spec-driven: продукт, наука и контракт реализации живут в docs/ — от 01-product.md до 08-social.md. Все решения по неоднозначностям спецификации логируются в docs/DECISIONS.md.

Что приложение честно НЕ обещает

Повышение IQ, «улучшение мозга в целом», профилактику деменции и гарантированный перенос на работу и жизнь. «Дальний перенос» когнитивных тренировок наукой не подтверждён — тренируются конкретные навыки в самих задачах и близких к ним.

About

BrainTone — mobile-first web app for short adaptive cognitive workouts. Next.js, TypeScript, Auth.js, Neon Postgres; local-only mode with progress in localStorage.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages