От учебной проблемы до 1000 пользователей: как я писал интерактивный учебник по RxJS
- понедельник, 2 февраля 2026 г. в 00:00:08
История проекта началась в прошлом году (2025). Я преподаю JavaScript в HTML Academy, и когда мне предложили взять поток начинающих разработчиков по Angular, я согласился. Мы успешно прошли базу, но когда дело дошло до HttpClient и обработки данных, я столкнулся с проблемой: студентам сложно понять Observable и реактивный подход, имея в багаже только промисы.
На лекции мне задали резонный вопрос: А где посмотреть актуальный и понятные материалы по RxJs?.
Я провел небольшой ресерч и понял, что ниша полупустая:
Видеокурсы (YouTube, Udemy) - это пассивное потребление, код там не потрогаешь.
RxJs Fruits - крутой проект, но это игра которая показывает только базу.
Официальная документация - слишком сухая и сложная для старта.
Конечно, фоном шло обсуждение, что RxJs умирает из-за прихода сигналов в Angular. Но реальность показывает обратное: Сигналы отличны для синхронного стейта, но для сложной оркестрации асинхронных событий RxJs остается стандартом.

Изначально я планировал сделать простой инструмент (для своих) - выдавать задачи студентам и разбирать их на лекциях. Но в процессе понял: проблема глобальная. Новичкам не хватает песочницы, где можно ошибаться. Сеньерам нужен инструмент, чтобы быстро освежить память (например, перед собеседованием, где часто просят отрефакторить поток).
Так родился RxJs Ninja. Я сразу после релиза добавил второй язык (английский), так как понимал, что тема актуальна глобально.
Никакого маркетингового бюджета у меня не было. Я просто рассказал о проекте в своем Telegram канале, профильных чатах и сделал пару постов в международных сообществах разработчиков. В конце декабря 2024 года проект ушел в паблик.
Прошло чуть больше месяца активного использования (метрики сняты за 90 дней). Давайте посмотрим на данные аналитики.

За это время проект преодолел планку в 1000 уникальных пользователей.
New users: 1000+
Returning users: ~19-20%
Почти каждый пятый возвращается. Для учебного пет проекта без рекламного бюджета и рассылок это хороший показатель. По всей видимости люд добавляют сайт в закладки.

География оказалась интересной. Ядро аудитории - русскоговорящее комьюнити. Но благодаря английской локализации и постам в зарубежных сетях, подтянулись пользователи из Германии, Польши и США. Это показывает что перевод и переключение языка я делал не зря.

Среднее время вовлечения - 3 минуты 29 секунд. В некоторые дни этот показатель вырастает до 11-12 минут. Это показывает, что люди активно учатся и проходят тренажер.
Самое интересное кроется в эвентах которые я настроил для сбора аналитики.
Эвент | пользователи | конверсия | вывод |
Посетители | 1039 | 100% | Пришли на сайт |
Просмотр урока | 405 | 39% | Просмотрели урок |
запуск кода | 144 | 14% | Ядро аудитории |
Завершили урок | 126 | 87.5% | Продукт держит |
флеш карточки | 27 | 2.6% | провал фичи |
Высокое удержание в практике: Если пользователь нажал кнопку Run, запустил код хотя бы один раз, он с вероятностью 87.5% доходит до конца урока. Это моя главная метрика успеха. Среднее количество запусков кода на одного активного пользователя - 16 раз. Люди пишут, ломают, чинят и проходят уроки.
Провал фичи флеш карточки: Так как я в своем обучении использую подход активного изучения и активного вспоминания с использованием Anki карточек, я подумал, что будет полезно запомнить то, что выучили на практике. Как результат этой фичей воспользовались 27 человек (2.6% от всех пользователей), как вывод я вижу что курс используют как интерактивный тренажер и нет желания учить. В следующем релизе я уберу или понижу приоритет этой фичи и возможно вернусь в будущем если появится спрос.
Сейчас проект работает как MVP. Аналитика показала, что продукт востребован, поэтому я продолжаю разработку в свободное время. Сейчас занимаюсь рефакторингом UI/UX и наполнением контента (остальные операторы с примерами и задачами).
После того как я закончу текущий спринт, я вижу несколько путей развития:
RxJs Decision Tree (Wizard). Интерактивный помошник. Вы отвечаете на вопросы (Нужно отменить прошлый запрос?, Потоков много?) и алгоритм подбирает нужный оператор с сниппетом кода (примером).
Визуализация Потоков (Marble Diagrams). Дополнительно к курсу написать графическое отображение потоков (шарики на временной шкале или по примеру RxJs Fruits конвеер), которое генерируется из кода.
Ссылка на проект: RxJs Ninja
p.s. Если есть идеи или предложения, пишите в комментариях.