Лучше, чем Anki: как я придумал бот для запоминания английских слов и планирую выйти на миллион пользователей
Highload продолжает публиковать истории о pet-проектах, вошедших в топ-20 лучших по итогам голосования наших читателей. Параллельно эти проекты оценивает жюри из опытных разработчиков и инвесторов. Победителей конкурса мы планируем объявить 10 июля.
Лучшие проекты получат призы от компании Genesis: занявший первое место — Apple iPhone 12 64GB, второе место — наушники Marshall Monitor II ANC Black, третье — набор Arduino.
Дальше — рассказ разработчика Артема Пахомова о его pet-проекте — боте для заучивания английских слов 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.
Стек бэкенда для 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-ботов. Сегодня ботом пользуется почти тысяча юзеров.
Монетизация
Моя цель — это English/Spanish-аудитория. Поэтому я составил примерный план, как на нее выйти:
- Запускаю бота с возможностью учить английские слова тем, кто понимает по-русски.
- Затем запускаю изучение испанских слов русскоговорящей аудиторией на базе частотного словаря испанского языка.
- Имея в базе две пары — English/Russian и Spanish/Russian, я начну работу над English/Spanish. Когда эта пара будет готова, то моя потенциальная аудитория в Telegram — миллионы пользователей.
Поэтому пока надобности в монетизации нет, но как только будет органический рост English/Spanish, можно подумать о подписке.
Как будут оценивать проект
В рамках конкурса 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.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: