Задача
Было три разрозненных входа: прайс в закрепе канала, материалы в постах, продажи через личку. Клиент не понимал, что я делаю, читатель не находил гайд, а я вручную выдавал доступы.
Нужен был один продукт, который работает и как Mini App внутри Telegram, и как обычный сайт по домену.
Что сделал
Одна кодовая база на Next.js, среда определяется в рантайме. Внутри Telegram подхватывается SDK: нативная кнопка «назад», хаптика на каждом действии, отступы под safe-area. На сайте — обычный хедер, метатеги и SEO.
Контент лежит в MDX-файлах: чтобы добавить материал, достаточно положить файл — не нужна админка и не нужен деплой кода ради текста.
Авторизация через initData с проверкой подписи на бэке, платежи через ЮKassa, выдача доступов в закрытый канал — ботом, персональной ссылкой на один вход.
Результат
Продукт продаётся из того же интерфейса, где человек читает бесплатный гайд. Доступы выдаются сами, я не участвую.
Стек и почему он
Next.js — потому что нужен и SSR для сайта, и лёгкая статика внутри Telegram. FastAPI — потому что рядом с ботом на Python и платежами удобнее держать логику доступов в одном месте.