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

Оленка Пилипчак

Highload продолжает публиковать истории о pet-проектах, вошедших в топ-20 лучших по итогам голосования наших читателей. Параллельно эти проекты оценивает жюри из опытных разработчиков и инвесторов. Победителей конкурса мы планируем объявить 10 июля.

Лучшие проекты получат призы от компании Genesis: занявший первое место — Apple iPhone 12 64GB, второе место — наушники Marshall Monitor II ANC Black, третье — набор Arduino.

Дальше — рассказ разработчика Артема Пахомова о его pet-проекте —  боте для заучивания английских слов Repeatwordbot.

Идея

Артем Пахомов — разработчик Repeatwordbot

Идея проекта пришла спонтанно, когда я хотел найти бесплатный сервис вроде Anki, чтобы повторять английские слова. Но тут возникла проблема кроссплатформенности и доступности одного и того же списка слов для изучения как со смартфона, так с Linux и Windows. Поэтому решил создать Telegram-бот, так как клиент Telegram доступен с популярных типов устройств.

Бот помогает изучить около 18 тысяч английских слов. Слова разделены по частоте использования в языке в словари по 500 слов. Бот присылает голосовое сообщение, чтобы человек смог понять, как звучит слово.

В Repeatwordbot доступно десять голосов — это интеграция с Google Text To Speech API (Wavenet-голоса, которые генерирует нейронная сеть). В дальнейшем планирую добавить режим диктанта для тренировки слушания: будет приходить голосовое сообщение на английском и нужно будет выслать прослушанный текст в ответ.

Бот помогает запоминать английские слова методом интервальных повторений

Реализация и технологии

MVP запустил за пару дней, так как спарсил в интернете слова и озвучку. Это было пять-семь тематических словарей и четыре словаря по 4,5 тысячи слов. Собирал отзывы пользователей, которые говорили, что большие словари неудобны для изучения. Поэтому переписал бота с разбивкой на словари по 500 слов по частоте использования.

Озвучка была низкого качества, поэтому написал третью версию бота с интеграцией Google Text To Speech API.

Со второй версии начал вести борд в GitHub.

Борд проекта на GitHub

Стек бэкенда для Telegram-бота:

  • PHP 8 без фреймворков, в дальнейшем есть вероятность использовать Laravel/Symfony, но пока нет необходимости;
  • longman/telegram-bot;
  • Doctrine (изначально была библиотека попроще, но не хватало возможностей, поэтому интегрировал со второй версии бота);
  • mpdf/mpdf для экспорта в pdf;
  • Google Cloud Text To Speech для голосовых сообщений;
  • Codeception для тестов;
  • SonarCloud для анализа;
  • Psalm;
  • Redis для кеша;
  • Supervisor для воркеров (очереди экспорта, нотификации);
  • MySQL;
  • Docker;
  • GitHub Actions для CI;
  • Prometheus и Grafana для метрик;
  • Makefile для быстрых команд.

Были проблемы с библиотекой longman/telegram-bot — обнаружил, что запросы падают, если Telegram пропустил update_id из-за долгого перерыва в использовании бота. Проблему невозможно было решить без исправлений библиотеки — там даже есть issue на эту тему. Решил вопрос переходом от getUpdates на webhook.

У меня — фултайм-занятость, работаю в Digitex (крипто-стартап). Этим pet-проектом занимаюсь по вечерам и на выходных. Например, недавно внедрил Codeception и написал тесты с покрытием 72,7% c нуля при кодовой базе в 4400 строк.

В какой стадии проект

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

После переезда на третью версию был инцидент, который тянет на постмортем. Я обнаружил баг, который «отловил» только к часу ночи. Я его исправил и заработали нотификации. 56 человек не занимались больше суток, и им пришло уведомление, что пора бы повторить тренировку (по умолчанию нотификейшн приходит ровно через сутки после последнего занятия, в тихом режиме). Но тут появился второй баг: не сохранялось использование нотификации, поэтому уведомления стали приходить друг за другом. Так, 56 человек получили несколько десятков уведомлений в час ночи. В тихом режиме, но все же! Я понял что проект не может дальше жить без тестирования.

Рекламу не делал: пользователи приходят сюда из других моих Telegram-ботов. Сегодня ботом пользуется почти тысяча юзеров.

Статистика по Repeatwordbot

Монетизация

Моя цель — это English/Spanish-аудитория. Поэтому я составил примерный план, как на нее выйти:

  • Запускаю бота с возможностью учить английские слова тем, кто понимает по-русски.
  • Затем запускаю изучение испанских слов русскоговорящей аудиторией на базе частотного словаря испанского языка.
  • Имея в базе две пары — English/Russian и Spanish/Russian, я начну работу над English/Spanish. Когда эта пара будет готова, то моя потенциальная аудитория в Telegram — миллионы пользователей.

Поэтому пока надобности в монетизации нет, но как только будет органический рост English/Spanish, можно подумать о подписке.

Repeatwordbot напоминает, когда нужно повторить тренировку

Как будут оценивать проект

В рамках конкурса pet-проектов разработчики и инвесторы оценят проект Repeatwordbot по таким критериям:

1. Оригинальность идеи.

2. Качество кода.

3. Технический уровень.

4. Жизнеспособность идеи.

5. Перспективы проекта как бизнеса.

6. Инвестиционная привлекательность.

Победителей среди 20 кейсов определят на основе оценок инвесторов (45%), разработчиков (45%) и голосов читателей Highload (10%).

Более подробно, кто и как будет оценивать кейсы, можно прочитать здесь: статья об экспертах, критериях и правилах конкурса

Проект Repeatwordbot оценивают:

Максим Федоров

Senior PHP Developer в Yellow Stone.

Оценивает проекты по backend PHP и веб-разработке. Свой путь в IT Максим начинал как разработчик программного обеспечения для ПК в 2008 году. Затем перешел в веб-разработку, так как считает эту отрасль интересной в техническом плане и дающей множество возможностей. Последние 6 лет работает над разными проектами в качестве backend-разработчика, имеет опыт управления командами до десяти человек.

Богдан Пасечник

Senior PHP Developer Genesis на проекте Lift.

Оценивает бэкенд-проекты на PHP. Создал CRM-систему для агентств недвижимости, которая успешно работает и конкурирует на рынке. Богдан больше 14 лет занимается программированием, последние четыре года развивается в архитектуре IT-решений и DevOps. Работает с тремя языками программирования: PHP, Go, JavaScript, а также интересуется Dart, Python и TypeScript.

Елена Мажуга

Старший инвестиционный аналитик Genesis Investments.

Роман Бабицкий

Основатель инвесткомпании Babitskyi Investment, глава совета по вопросам иностранных инвестиций и экономического развития Украины.

Дмитрий Томчук

Основатель инвестиционного фонда Fison.

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023