Skip to content

Repository files navigation

English Trainer logo

English Trainer

Свой тренажёр английского — PWA для телефона, от A1 до IELTS.

Уроки грамматики · слова с интервальным повторением · чтение с картинками · книги-картинки · аудирование · AI-разбор письма и речи · произношение · ежедневные занятия. Без подписок и рекламы, все данные — на вашем сервере.

Сделано для двух учеников (и их кота). Лицензия MIT — разверни свой.


✨ Возможности

Четыре навыка в одном приложении:

  • 📖 Грамматика — 45+ структурированных уроков (A1→B2): теория, примеры, видео и упражнения с автопроверкой и подсказками. Плюс справочник: шпаргалка всех 12 времён, исключения, повседневные слова, части тела.
  • 📚 Чтение — 50+ адаптированных рассказов и сказок (A1–B1), каждый с иллюстрацией, переводом по тапу, озвучкой, словарём (→ в колоду) и вопросами на понимание. Плюс листаемые книги-картинки (постраничный ридер).
  • 🎧 Аудирование — диктанты на TTS (A1–B1): слушай фразу, печатай, что услышал.
  • ✍️ Письмо и 🗣️ говорение — отвечай текстом или голосом и получай AI-разбор под свой уровень (ошибки с объяснением по-русски, оценка band). IELTS Task 1/2 и Speaking Part 1/2/3.
  • 🔊 Произношение — минимальные пары (ship/sheep) и тренировка на слух.

Движок, который держит ритм:

  • 🗓️ Дневная сессия — одна кнопка собирает план на сегодня: разминка → слова к повтору → следующий урок → аудирование/чтение.
  • 🧠 Интервальное повторение (SM-2) для 3000+ слов (49 тематических наборов) + слова, сохранённые из любого текста.
  • 🗺️ План A1→IELTS со статистикой темпа, 🔥 стриками, XP, уровнями и бейджами.
  • 🐛 Журнал ошибок, ✅ трекер прогресса, 🔁 разминки, 🌐 контекстный переводчик.
  • 🔔 Push-напоминания (включая «давно не заходил»), 👤 админка со статистикой по каждому ученику.

Детали, которые замечают единицы:

  • 🎙️ ElevenLabs TTS — естественный размеренный голос, кэш на сервере: каждая фраза генерится один раз.
  • 🖼️ Все картинки в WebP, ленивая загрузка; скелетон-лоадеры и плавные переходы (без дёрганья).
  • 📴 Устанавливается как PWA, работает офлайн, вечный логин (переживает деплои).

📱 Скриншоты

Главная Грамматика Упражнение Словарь Повторение
Главная Грамматика Упражнение Словарь Повторение

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

Возможности · Архитектура · Как добавлять контент · Развёртывание · Дорожная карта — также в Wiki.

🧱 Технологии

  • Фронтенд: Vite + React 19 + TypeScript + Tailwind v4, PWA (vite-plugin-pwa, injectManifest).
  • Бэкенд: Fastify 5 на Node 24 со встроенным node:sqlite (без внешней БД).
  • Контент: Markdown-уроки (gray-matter) + JSON для словаря и книг — правишь файлы, без кода.
  • AI (всё опционально): любой OpenAI-совместимый chat API для перевода и разбора письма/речи; ElevenLabs для озвучки; Gemini («Nano Banana») для генерации иллюстраций.

📁 Структура проекта

content/            # весь учебный контент (код не нужен)
  lessons/*.md      #   уроки грамматики, тексты для чтения (kind: reading), диктанты
  books/*.json      #   книги-картинки (+ AGENT_PROMPT.md для генерации новых)
  grammar/*.md      #   карточки-справочник
  vocab/*.json      #   тематические наборы слов
server/src/         # Fastify API, SQLite, SRS (SM-2), планировщик push, прокси TTS
web/src/            # React PWA (экраны, компоненты, lib)
  public/reading/   #   обложки рассказов (webp)
  public/books/     #   страницы книг (webp)

🚀 Запуск

Требования: Node 24+ (для node:sqlite).

git clone https://github.com/dripips/english-trainer.git
cd english-trainer
npm install                      # ставит web + server воркспейсы
cp .env.example server/.env      # заполни (см. ниже); chmod 600 server/.env

npm run build:web                # сборка PWA
npm start                        # старт Fastify (отдаёт API + собранную PWA)

Режим разработки: npm run dev (Vite dev-сервер + API с прокси).

Конфигурация

Всё через переменные окружения — см. .env.example. Приложение работает, если задать только AUTH_SECRET, COOKIE_SECRET и SEED_USERS: перевод откатится на бесплатный API, а озвучка — на голос браузера. Добавь LLM_TRANSLATE_* для контекстного перевода и AI-разбора, ELEVENLABS_* для естественной озвучки, VAPID_* для push-напоминаний.

Развёртывание

Подойдёт любой хост с Node 24. Эталонная схема: git pullnpm run build:websystemctl restart за обратным прокси с HTTPS. Файл SQLite и кэш TTS лежат в server/data/ — бэкапь его, он переживает деплои. Подробнее — Развёртывание.

✏️ Как добавить контент

Для контента сборка не нужна — положи файл в content/ и перезапусти сервер:

  • Урок / текст для чтения / диктант: Markdown-файл в content/lessons/ с YAML-фронтматтером (id, level, exercises, опционально reading, kind: reading). Бери любой урок как шаблон.
  • Набор слов: JSON-файл в content/vocab/.
  • Книга-картинка: JSON в content/books/ + картинки страниц. Готовый промпт для агента пишет историю и сам генерирует иллюстрации — см. content/books/AGENT_PROMPT.md.

📜 Лицензия

MIT.

About

Self-hosted, mobile-first PWA to learn English A1→IELTS: grammar, SM-2 vocabulary, graded reading & illustrated picture books, listening, AI writing/speaking feedback, pronunciation, daily sessions.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages