Мои проекты

делаю на досуге разные проекты, которыми пользуюсь сам. Делюсь здесь, может кому-то понравится

Автор: DorMiDont

сделал читалку книг для себя: открывается на любом утюге, работает без интернета и хранит всю библиотеку

32
Читалка

Всем привет! На создание этого проекта меня подтолкнула банальная проблема: я читаю очень много (в среднем по книге каждые 2-3 дня) и со временем начал путаться в авторах, сериях и том, что уже прочитано, а что нет. Существующие решения либо обрастали лишним функционалом, либо не давали нормального контроля над личной библиотекой.

Поэтому было решено сделать свой инструмент для комфортного чтения с акцентом на каталогизацию, кроссплатформенность и статистику. Поделюсь тем, как это устроено под капотом, какую архитектуру я выбрал и с чем пришлось столкнуться при реализации.

Архитектура и стек: почему PWA и браузерные технологии?

Главное требование к читалке - полная независимость от платформы и доступность с любого устройства (ПК, смартфон, планшет, телевизор) без необходимости ставить отдельные нативные приложения под каждую ОС.

  • PWA (Progressive Web App): Приложение устанавливается в систему прямо из браузера и работает в отдельном окне.
  • Оффлайн-доступ: За кэширование статики и работу без подключения к сети отвечает Service Worker.
  • Хранилище данных: Все книги и файлы обрабатываются исключительно на стороне клиента.

Что под капотом: архитектура, оффлайн и хранение гигабайт в браузере

Когда я проектировал читалку, главным требованием было отказаться от хранения самих файлов книг на сервере в пользу Client-Side First архитектуры. Сервер не индексирует, не передает и не хранит ваши библиотеки.

  1. Service Worker и PWA: Приложение упаковано как прогрессивное веб-приложение. За кэширование статики и мгновенную загрузку интерфейса отвечает Service Worker. Интернетом для самого процесса чтения пользоваться не нужно вообще - закачал базу и можно читать хоть в автономном режиме.
  2. IndexedDB + OPFS (Origin Private File System): Забудьте про костыли с локальным хранилищем (localStorage с его убогим лимитом в 5 МБ). Для работы с файлами книг используется IndexedDB и современная файловая система браузера OPFS.
  3. Гибридная синхронизация метаданных: Так как вся тяжелая база книг живет локально на устройстве пользователя, по сети гоняются исключительно легкие метаданные (текущая позиция чтения, настройки, оценки и статистика для облачного профиля - если пользователь решил авторизоваться). Сами файлы книг на сервер не отправляются вообще. Для передачи конкретной книги между устройствами используется генерация временных хэш-ссылок с позицией чтения.

Основной функционал

  1. OPDS-каталоги: «Из коробки» встроена поддержка легальных каталогов (например, Библиотека Мошкова), при этом пользователь может подключать любые сторонние OPDS-источники.
  2. Учет и статистика: Проект создавался в первую очередь ради структурирования прочитанного. Реализована сортировка по жанрам, авторам, сериям, выставление оценок и ведение детальной истории чтения.
  3. Синхронизация и шаринг: На текущем этапе реализована генерация уникальных ссылок с привязкой к конкретной позиции в тексте (через метаданные), что позволяет переносить прогресс или делиться книгой. В планах - полноценная фоновая автосинхронизация метаданных между девайсами.
  4. Интегрированная озвучка (TTS): Реализован режим чтения вслух с помощью встроенных в браузер речевых движков с сохранением позиции воспроизведения.
  5. Поддерживаемые форматы: Фокус сделан на .fb2 как на основной стандарт для текстовой русскоязычной литературы. В перспективе планируется расширение форматов (включая .epub).

Безопасность, приватность и серверная часть

Один из частых вопросов касается безопасности и хранения пользовательских данных.

  • Где лежат файлы книг? Серверная часть не хранит, не индексирует и не передает файлы пользовательских книг. Вся обработка и хранение текстовых файлов происходят изолированно в песочнице браузера на устройстве пользователя.
  • Зачем нужна авторизация? Регистрация полностью опциональна и используется исключительно для привязки облачного профиля, в котором хранятся легкие метаданные: настройки интерфейса, общий прогресс чтения и оценки. Читать книги с локального диска можно полностью без регистрации и создания аккаунтов.

Ссылки на проект

  • Главная страница приложения: libd.eu

Проект развивается открыто и пишется под практические нужды. Буду рад конструктивной технической критике, идеям и пожеланиям в комментариях!

CEFR RPG - Прокачай свой английский

41
Читалка

Сделал тут на досуге игру...

Учи английский так, как будто ты играешь в RPG. Потому что ты и играешь. От A1 до C2 — прокачивай словарный запас, проходи испытания, открывай замки, зарабатывай кристаллы, развивай питомца и соревнуйся с другими игроками.

Никаких бесконечных «хлеб, мама, папа» по кругу. Здесь каждое выученное слово становится частью твоего игрового прогресса. Ты не просто занимаешься английским — ты прокачиваешь персонажа вместе со своим языком.

Создать пост

Арена — главный тренажёр CEFR RPG. Здесь происходит основная работа со словарём: ты видишь слово или перевод и должен самостоятельно вспомнить правильный ответ.

EN→RU и RU→EN перемешиваются случайным образом. Это тренирует два разных навыка: узнавание знакомого слова и самостоятельное воспроизведение. Ты не просто узнаёшь английский — ты учишься его вспоминать.

Система 3/3. Одного правильного ответа недостаточно. Один раз — случайность. Два — совпадение. Три правильных ответа подряд — слово действительно можно считать выученным.

Ошибки не пропадают. Если ты ошибся, слово отправляется в Качалку, где его можно дополнительно отработать, посмотреть в словаре, услышать произношение и затем снова доказать знание.

Гибкие таймеры. 1, 3, 5 или 10 минут на сессию. Есть свободная минута — сыграй минуту. Есть больше времени — тренируйся дольше и получай больше награды.

Привязка к CEFR. Слова распределены по уровням A1–C2, поэтому обучение можно выстраивать последовательно — от базовой лексики к более сложной.

Скоростная тренировка слов в игровом формате

Случайный выбор направления перевода

Система 3/3 для подтверждения знания

Ошибки автоматически переходят в Качалку

Гибкие таймеры под твоё расписание

Прозрачный прогресс: количество реально выученных слов

Ошибся — слово не исчезло. Оно попало в работу. Качалка — это спортзал для памяти: сюда попадают слова, которые ты не смог правильно вспомнить в Арене.

Здесь можно разобрать слово глубже: посмотреть перевод, открыть словарную информацию, увидеть примеры, услышать реальное произношение носителя и потренироваться.

А потом слово возвращается в Арену. После тренировки его снова нужно угадать 3/3. Только после этого оно считается выученным.

Получается замкнутый цикл: ошибка → работа над ошибкой → тренировка → повторная проверка → знание.

Фонарь в холле. 🟢 Всё чисто. 🟡 Есть слова, требующие внимания. 🔴 Пора в Качалку. Ты постоянно видишь состояние своего обучения.

Одно дело — видеть список из тысячи слов. Совсем другое — видеть карту, которую хочется пройти. Замки превращают изучение английского в настоящее путешествие.

Структура A1–C2. Ты постепенно проходишь уровни английского, двигаясь от простого материала к более сложному.

Замки-испытания. Каждый замок — это набор слов. Чтобы пройти его, нужно угадать 90% из них. Не просто нажать несколько кнопок и забыть — нужно показать реальное знание материала.

Звёзды и короны. Прошёл замок — хорошо. Прошёл идеально — получай 3 звезды. Закрыл его полностью — корону. А потом можно вернуться и попытаться улучшить результат.

Ранги как в RPG: STONE → IRON → BRONZE → SILVER → GOLD → DIAMOND. У тебя всегда есть следующая ступень, до которой хочется добраться.

Чёткая структура от A1 до C2

Система рангов как в настоящей RPG

Испытания с порогом прохождения 90%

Звёзды и короны за качество прохождения

Наглядная карта прогресса — видно, куда двигаться дальше

Что означает «ты знаешь английский на 73%»? Какие слова ты знаешь? Какие забыл? Что именно нужно учить дальше?

CEFR RPG показывает прогресс конкретно: сколько слов ты выучил, какие замки прошёл, сколько звёзд и корон получил и насколько далеко продвинулся.

Например: 2068 слов · B1 · 122/1473. Это не абстрактная оценка. Ты видишь конкретный результат своей работы.

Каждое слово — маленькая победа. Сотни слов — уже серьёзный прогресс. А вся система превращает этот прогресс в игровую карту, достижения и новые цели.

Хаб — сердце CEFR RPG. Отсюда ты попадаешь во все основные режимы игры. Каждая зона отвечает за свою часть обучения или игровой прогрессии, но всё связано в одну систему.

Главная — точка входа, откуда начинается твой путь.

Арена — основной тренажёр слов. Здесь ты учишься, ошибаешься, зарабатываешь кристаллы и увеличиваешь словарный запас.

Качалка — место для работы над ошибками.

Замки — игровая структура продвижения от A1 до C2.

Архив — большой словарь с озвучкой носителями, примерами, словоформами и значениями.

Нескучный сад — контекст, фразы и грамматические задания.

Правила — грамматика от A1 до C2, объяснённая простым языком.

Логово — твой профиль, прогресс, питомец и музыкальная коллекция.

Рынок — аватары, карточки и питомцы.

Зал славы — рейтинги и соревнование с другими игроками.

Таверна — чат, квизы и радио.

Доска объявлений — фильмы в английском дубляже.

Расширение — микрообучение прямо в браузере.

100 000+ слов и значений. Большая словарная база, встроенная непосредственно в игру.

CEFR A1–C2. Слова привязаны к уровням, поэтому словарь связан с общей системой обучения и прогрессии.

Произношение носителями. Не просто машинная озвучка — можно услышать реальное произношение слова.

Словоформы. Можно увидеть связанные формы слова, а не только одну запись.

Фразы и примеры. Слово нужно не только узнать, но и увидеть в контексте.

Множественные значения. Одно английское слово может иметь несколько смыслов, и словарь помогает увидеть эту разницу.

Архив работает вместе с обучением. Если слово встретилось в игре, ты можешь перейти от простого вопроса «что это значит?» к полноценному изучению слова.

Знать перевод слова — ещё не значит уметь им пользоваться. Поэтому в Нескучном саду слова переходят в контекст.

Фразы из 9000 слов. Материал прошёл через ИИ-пайплайн с многоступенчатой валидацией: Google Translate → Gemini → ChatGPT. Фразы проверяются на естественность и грамматику.

Грамматические ловушки. Три варианта — один правильный и два с ошибками. Ты учишься замечать не только правильный английский, но и типичные неправильные конструкции.

Обратный перевод RU→EN. Узнать правильную фразу легко. Сложнее самому её построить. Именно поэтому обратный перевод заставляет активировать словарь.

Фразы, сгенерированные ИИ и проверенные на естественность

Грамматические ловушки с типичными ошибками

Обратный перевод для развития активного словаря

Переход от отдельных слов к реальному контексту

Без академического жаргона. Не обязательно сначала выучить двадцать терминов, чтобы понять одно правило. Объяснение строится вокруг того, как реально работает английская фраза.

GOOD / WRONG. Правильные и ошибочные варианты показываются рядом, чтобы разница была очевидна.

От A1 до C2. От простых конструкций вроде «I like this game» до сложных форм вроде «Were I to accept, I'd be rich».

Поиск и фильтры. Можно искать правила, примеры и ошибки и фильтровать материал по уровням A1, A2, B1, B2, C1 и C2.

Объяснения без лишнего академического жаргона

Правильные и ошибочные примеры

Поиск по правилам, примерам и ошибкам

Структура от A1 до C2

Аватары. COMMON → ENHANCED → ELITE → LEGENDARY → HEROIC. 58 вариантов для коллекционирования и самовыражения.

Карточки. STONE → IRON → BRONZE → SILVER → GOLD → DIAMOND. Предметы, которые могут давать игровые бонусы.

Питомец. Один питомец на игрока. Его можно развивать и получать бонус к кристаллам до x1.5.

Три параллельные прогрессии. Аватары, карточки и питомец дают дополнительные долгосрочные цели и связывают обучение с игровой экономикой.

Ты учишь слова → получаешь награды → развиваешь персонажа → открываешь новые цели → возвращаешься учиться.

Коллекция аватаров

Коллекция карточек

Развитие питомца

Редкость предметов как в коллекционных RPG

Игровая экономика связана с обучением

Логово — это визуальная история твоего прогресса. Здесь собраны твой уровень CEFR, количество выученных слов, питомец, музыкальная коллекция и другие результаты.

Это не просто профиль с цифрами. Ты видишь то, что уже построил внутри игры.

Прогрессом можно поделиться ссылкой. Например, показать его другу или преподавателю.

BEST — Ultimate Power Rating. Общий рейтинг объединяет разные стороны игрового прогресса: слова, замки, звёзды, короны и питомца.

ARENA — рейтинг по словам. Показывает результат по словарному прогрессу.

CASTLE — рейтинг по замкам. Показывает, насколько далеко игрок продвинулся по системе испытаний.

1M — рекорды скорости. Сколько слов удалось угадать за одну минуту.

Топ-100. Здесь обучение превращается в соревнование. Ты видишь других игроков и можешь поставить перед собой новую цель — подняться выше.

Чат в реальном времени. Общайся с другими игроками, обсуждай игру, делись успехами и помогай новичкам.

Квизы. Кто первым отвечает правильно — получает кристаллы. Это уже не просто проверка знаний, а небольшая скоростная гонка.

Радио. Около 54 000 станций со всего мира. Музыка, разговорные программы, новости и другой аудиоконтент можно слушать прямо внутри игры.

Пластинки. Их можно покупать у бармена и собирать музыкальную коллекцию, которая затем появляется в Логове.

Автомодерация. Фильтры помогают ограничивать мат, расизм и взрослый контент, чтобы чат оставался комфортнее для игроков.

Знакомый сюжет — меньше нагрузки на мозг. Ты уже знаешь, что происходит в фильме, поэтому можешь сосредоточиться именно на английской речи.

Фильмы в английском дубляже. «Джентльмены удачи», «Пираты XX века», «Усатый нянь» и другие знакомые истории можно смотреть в английской версии.

Уровни A1–B1. Контент маркируется по CEFR, чтобы можно было выбрать материал по своему уровню.

Это уже не учебное упражнение. Это переход к английскому в более естественном аудиоконтексте.

Фильмы в английском дубляже

Уровневая привязка A1–B1

Знакомый сюжет вместо борьбы с незнакомым содержанием

Тренировка аудирования в естественной речи

Не всегда есть время запускать большую игру. Иногда есть всего несколько секунд. Для этого существует расширение CEFR RPG.

Открыл новую вкладку — увидел слово. Несколько секунд на ответ — и продолжаешь свои дела.

За день таких микро-тренировок может накопиться десятки. Вместо одного длинного занятия получается множество маленьких повторений.

20 языков и 380 направлений. Не только EN↔RU: можно тренировать разные языковые пары.

Без регистрации. Открыл — играешь. Минимум действий, чтобы превратить обычное открытие вкладки в ещё одну маленькую тренировку.

Микрообучение за несколько секунд

20 языков

380 направлений перевода

Рекорды и уровни

Без регистрации — открыл и играешь

Учителю важно видеть не красивую цифру, а реальную работу ученика. Поэтому CEFR RPG развивается не только как игра для самостоятельного обучения, но и как инструмент, который можно использовать вместе с преподавателем.

Личный кабинет учителя позволяет подключать учеников по персональной ссылке и отслеживать их прогресс.

Вместо абстрактного «ученик знает английский на 72%» преподаватель может видеть конкретную картину:

какие слова ученик уже выучил;

какие слова сейчас находятся в Качалке;

когда ученик последний раз играл;

сколько новых слов появилось с момента предыдущей проверки;

как меняется словарный прогресс.

Система 3/3 делает результат понятным: слово либо подтверждено как выученное, либо над ним ещё нужно работать.

Так преподаватель получает возможность видеть не только результат занятия, но и то, что ученик реально делает между занятиями.

Потому что здесь ошибка — часть обучения.

Обычная карточка может спросить перевод слова, получить неправильный ответ и просто показать следующую карточку.

В CEFR RPG ошибка запускает следующий этап: слово попадает в Качалку, ты можешь разобрать его подробнее, посмотреть словарь, услышать произношение, потренироваться и снова встретить его в Арене.

Игра не пытается убедить тебя, что ты знаешь слово. Она заставляет тебя это доказать.

А дальше включается RPG: слова превращаются в прогресс, прогресс — в замки, замки — в достижения, достижения — в рейтинг.

Обучение получает цель, обратную связь, награду, соревнование и желание вернуться завтра.

Начинаешь с первого слова.

Учишь → ошибаешься → тренируешь → снова проверяешь.

Подтверждаешь знания → собираешь слова → проходишь замки.

Получаешь звёзды и короны → зарабатываешь кристаллы → развиваешь питомца.

Улучшаешь результат → поднимаешься в рейтинге → соревнуешься с другими игроками.

Используешь словарь, грамматику, фразы, фильмы и радио, чтобы выходить за пределы отдельных карточек.

А потом обнаруживаешь, что за всей этой игрой произошло самое главное: ты действительно знаешь больше английских слов.

CEFR RPG — это не игра, в которой есть немного английского. Это английский, превращённый в игру.

Пост был отредактирован moderator_purple.