Десктопное приложение (Electron + React + TypeScript), которое трекает время учёбы/работы и блокирует игры, пока не выполнена дневная цель.
Идея простая: сначала дело — потом игры. Пока ты не наберёшь запланированное количество часов учёбы или работы за день, запрещённые игры не запускаются — приложение их закрывает. Это создаёт мягкое, но ощутимое давление держать фокус и не уходить в игры «на пять минут».
- Сессии — таймер для учёбы/работы, время суммируется в дневную цель и сохраняется локально.
- Дневная цель — отдельные значения для будней и выходных + настраиваемый час сброса счётчика.
- Блокировка игр — запрещённые игры автоматически закрываются, пока цель не достигнута.
- Список игр — добавление вручную (выбор
.exe) или сканированием библиотеки Steam. - Дашборд — статистика за сегодня, вчера и последние 7 дней с графиками.
- Toggl Track — опциональная синхронизация старт/стоп сессий с проектом (категория идёт тегом).
- Трей и автозапуск — работает в фоне и может стартовать вместе с Windows.
Фоновый сервис каждые ~2 секунды проверяет запущенные процессы. Если найдена игра из
блок-листа, а дневная цель ещё не выполнена, процесс завершается. Игры Steam определяются по
пути установки, ручные записи — по имени .exe. Чтобы блокировка не отключалась случайно,
приложение продолжает работать в трее после закрытия окна.
Это «дисциплинарная» блокировка: она помогает держать фокус, но не защищает от целенаправленного обхода (диспетчер задач и т.п.).
Требуется Node.js 18+ и Windows.
git clone https://github.com/Finsoy/StudyTracker.git
cd StudyTracker
npm install # установка зависимостей + пересборка нативного модуля под Electron
npm run dev # запуск в режиме разработкиСборка установщика под Windows:
npm run build:win # готовый установщик появится в папке dist/- Задай цель. Открой «Настройки» → укажи количество часов на будни и выходные и час сброса счётчика (например, 4:00, чтобы ночные сессии шли в нужный день).
- Добавь игры. На вкладке «Игры» добавь
.exeвручную или просканируй библиотеку Steam — именно эти игры будут блокироваться. - Запусти сессию. На вкладке «Сессия» выбери «Учёба» или «Работа» и нажми «Начать сессию». Время копится в дневную цель.
- Достигни цели — играй. Пока цель не выполнена, игры из списка закрываются. Как только нужные часы набраны, блокировка снимается (индикатор в сайдбаре станет зелёным).
- (Опционально) Toggl. В «Настройках» включи Toggl Track и вставь API-токен (Profile settings → API Token), чтобы сессии зеркалились в Toggl с выбранным проектом.
- electron-vite — Electron + Vite + TypeScript
- React 19 + Tailwind CSS v4 + Recharts
- better-sqlite3 — локальное хранилище
MIT