
Пять продуктов в одном FastAPI-монолите: HTMX вместо React, грабли Telegram Mini App и биллинг на Stars
SwairIt 13 минут назад Пять продуктов в одном FastAPI-монолите: HTMX вместо React, грабли Telegram Mini App и биллинг на Stars 10 мин 396 Python * Учебный процесс в IT JavaScript * Проектирование API * Из песочницы...
GPT-5.6 31 Temmuz 2026'da yayınlanacak mı?
Значимый прорыв формирует отрасль ИИ: SwairIt 13 минут назад Пять продуктов в одном FastAPI-монолите: HTMX вместо React, грабли Telegram Mini App и биллинг на Stars 10 мин 396 Python * Учебный процесс в IT JavaScript * Проектирование API * Из песочницы Привет, Хабр. Меня зовут Ярослав, в сети — SwairIt. Полтора месяца назад я начал писать обычный todo-лист на FastAPI, а в итоге под одним доменом getdoday.
ru выросла небольшая студия из пяти продуктов: todo-приложение, кабинет для репетиторов, школьное Q&A, тренажёр билетов ПДД и Telegram-игра. Всё это — один FastAPI-монолит без единой строки React, ~76 000 строк кода и 1200+ тестов. В этой статье я разберу то, что считаю полезным для других:как один FastAPI-проект держит сразу несколько продуктов и не превращается в кашу;почему я выбрал HTMX вместо React и о чём не пожалел;четыре грабли Telegram Mini App, на которые ушли часы, и monkey-patch DNS, оживший бота на проде;неочевидное ограничение биллинга на Telegram Stars и паттерн, который его обходит;как устроен дев-процесс: mypy --strict, ruff, CI и автодеплой за минуту.
Технические детали
Пишу я в паре с Claude Code — терминальным AI-агентом. Не скрываю этого и ниже честно расскажу, как именно выстроен такой процесс. ruЧто живёт под одним доменомgetdoday.
ru — это витрина, с которой ведут ссылки на отдельные продукты. Все они работают в одном процессе, делят базу, инфраструктуру и одного бота:Doday Tasks (/) — кросс-платформенный todo: веб-кабинет, Telegram Mini App и чат-бот. Приоритеты P1–P4, дедлайны, повторения, проекты, секции, kanban, быстрый ввод на естественном языке.
Lessio (/lessio) — публичная страница и кабинет для репетиторов: услуги, расписание, запись клиентов и оплата через Telegram Stars. Razbery (/qa/) — школьное Q&A с разборами: 16 предметов, 5–11 класс. Не «готовый ответ», а объяснение.
Отраслевые последствия
Растёт за счёт органического поиска. Doday ПДД (/pdd/) — тренажёр официальных билетов ГИБДД: 1600 вопросов двух категорий (АВМ и CD), экзамен по правилам, марафон, поиск, статистика ошибок. Tap Tower (/taptower) — небольшая Telegram-игра (Mini App).
Каждый продукт — отдельный «срез» одного кода. Дальше расскажу, как это устроено, но сначала — про стек, потому что именно он делает такую плотность возможной. Стек: почему не ReactЯ учу JavaScript медленнее, чем Python, и в момент, когда нужно быстро довезти что-то рабочее, изучение React стало бы тормозом.
Поэтому стек я выбирал по принципу «максимум функциональности при минимуме боли на фронте». Получилось так:СлойЧто выбралПочемуBackendFastAPI + async SQLAlchemy 2. 0 + Pydantic v2Типы везде, mypy --strict зелёный, OpenAPI бесплатноБазаPostgreSQL 16 (asyncpg) + AlembicProduction-grade, миграции, а не SQLiteШаблоныJinja2, server-side renderНикакой гидратации, быстрый first paintИнтерактивHTMX 2Свапы кусков HTML по запросу — SPA-ощущение без JSON-API и без бандлаМикросостояниеAlpine.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





