Как мой телеграмм бот заменил мне Anki

На первом курсе университета я столкнулся с классической проблемой студента — необходимостью зубрить. В моем случае это был предмет по история и английский язык. Нужно было учить 100 дат или 250 слов по английскому.
Обычно для таких вещей все советуют Anki. Чтобы им пользоваться, нужно скачать приложение, потом как-то вытаскивать даты, отформатировать их в нужный формат таблицы (CSV и т.д.) или использовать чат-боты. Более того у меня не работала синхронизация с мобильным приложением.
Так появилась идея Mnemocards. Не нужно нигде регистрироваться, не нужно ничего скачивать. Открыл бота — и учишь.
Как это работает
Главная фича Mnemocards — избавление от рутины при создании учебных материалов. Ты можешь просто скинуть боту фотографию конспекта, страницы учебника или PDF-файл.
Бот сам «переварит» этот материал с помощью нейросети, вытащит нужные термины/даты/слова и сформирует из них готовую колоду карточек.
Дальше можно просто заходить в режим тренировки и свайпать карточки. Колоды можно удалять или делиться ими с однокурсниками.
Под капотом: архитектура и стек
Так как я уже немного умел писать на Python, выбор языка был очевиден. Для работы с Telegram API взял aiogram, а весь код писал в PyCharm. Доступ к нейросети Gemini я организовал через OpenRouter.
Саму архитектуру проекта я решил разделить на две части:
Bot — отвечает исключительно за интерфейс, кнопки и общение с пользователем в Telegram.
Worker — берет на себя формирование материала и общение с API нейросети.
В качестве базы данных выбрал PostgreSQL. И, честно говоря, проектирование и создание структуры БД оказалось для меня самой сложной частью всего проекта. Пришлось поломать голову.
Вообще, во всем мне помогали нейросети: они помогал мне писать код, исправлять ошибки и разбираться с архитектурой.
Деплой и запуск
Когда бот был готов локально, встал вопрос хостинга. Я не стал долго выбирать и взял сервер от Timeweb, он попался первым и стоил дешево. Всё приложение упаковал в Docker.
Итоги и планы
Сейчас Mnemocards полностью функционален и решает мою главную проблему. Если проект окажется хоть немного успешным и будет полезен не только мне, я планирую его развивать.
В ближайших планах:
Telegram Mini App. Математика требует работы со сложными формулами. В обычном текстовом сообщении Telegram их нормально не отправишь, поэтому полноценный Web App решит проблему корректного отображения математики.
Редактор карточек. Чтобы сгенерированные колоды можно было удобно править руками прямо в боте.
Монетизация. Возможно, в будущем появится платная подписка, но вводить её я буду только тогда, когда в боте действительно будет за что платить (например, расширенный функционал или увеличенные лимиты)
Буду рад, если вы протестируете бота и поделитесь фидбеком. Что бы вы добавили или изменили? Жду вас в комментариях!