Кейс · Веб-приложение
typing-lab: тренажёр слепой печати
Тренажёр слепой печати, который целиком работает в браузере и не обращается к серверу: Nuxt 4, история в IndexedDB, звук клавиш на WebAudio, офлайн через PWA. Режимы времени, слов, цитат, своего текста, кода и «слабых мест», шесть раскладок, метрики WPM, точность и консистентность, графики на чистом SVG. Пет-проект.
- Nuxt 4
- Vue 3
- TypeScript
- IndexedDB
- WebAudio
- PWA
- SVG
- vitest
- axe
- Cloudflare Pages
01 · Как выглядит
Скриншоты


02 · О проекте
Что это и зачем
typing-lab — тренажёр слепой печати на Nuxt 4: ни аккаунта, ни аналитики, ни запросов наружу, вся история лежит в IndexedDB на устройстве. Пет-проект.
Движок (набор, метрики, раскладки, генератор текстов) написан на чистом TypeScript без DOM и покрыт тестами отдельно от интерфейса. Рейтингов и таблиц лидеров нет намеренно: без сервера честно проверить чужой результат нельзя.
Ограничения
Не проверены реальные Safari и Firefox, реальные телефоны и экранные клавиатуры, японский и китайский IME (композиция проверена юнит-тестами и командой CDP в Chromium) и скринридеры вручную.
Dvorak, Colemak, Workman и фонетическая раскладка это подсказка на экране: печатать нужно на раскладке, включённой в системе. Фонетическая схема собственная. Русские тексты без ё, пунктуация приведена к ASCII.
Нет серверной части: нет рейтингов, подтверждения результатов и синхронизации между устройствами, только ручной экспорт и импорт. Скорости нельзя напрямую сравнивать с другими тренажёрами.
Lighthouse не запускался, замеры сняты собственным CDP-скриптом. npm audit показывает 7 high из одной цепочки dev-сервера Nuxt: в итоговый сайт она не попадает.
Что внутри
- Режимы: время (15/30/60 с), слова, цитаты, свой текст, код (JavaScript, Python, Go) и «слабые места» с адаптивными упражнениями из ваших ошибок
- Раскладки: ЙЦУКЕН, фонетическая, QWERTY, Dvorak, Colemak, Workman; клавиатура на SVG с подсказкой следующей клавиши и пальца
- Метрики: WPM, сырой WPM, CPM, точность, консистентность, ошибки по клавишам; графики на чистом SVG с табличной альтернативой для скринридеров
- История до 5000 результатов, цели, серии дней, 12 достижений, призрак с лучшим результатом; экспорт и импорт JSON со строгой проверкой
- Звук клавиш на WebAudio (выключен по умолчанию), тёмная и светлая темы, режим без отвлечений, горячие клавиши, PWA с работой офлайн
- 59 unit-тестов (vitest и fast-check) и 65 e2e-проверок по CDP; axe: 0 нарушений на всех страницах в 390 и 1280 px; CLS 0,000
- Выложено на Cloudflare Pages прямой загрузкой статической сборки
03 · Как запустить
Запуск одной командой
git clone <репозиторий по запросу> typing-lab
cd typing-lab
npm install
npm run dev04 · Код
Репозиторий приватный
Исходники лежат в приватном репозитории. Напишите в Telegram, открою доступ.
Запросить код