1. Раздели роли
- Бот открывает Mini App и отправляет уведомления.
- Frontend показывает UI внутри Telegram.
- Backend хранит данные и проверяет права.
- Admin panel управляет контентом, заявками и статусами.
2. Подключи кнопку Mini App
KeyboardButton(
text="Открыть кабинет",
web_app=WebAppInfo(url="https://example.com/app/")
)URL должен быть HTTPS. Без HTTPS Telegram WebApp работать нормально не будет.
3. Проверяй initData на backend
Нельзя доверять user_id с frontend. Frontend отправляет initData, backend проверяет подпись через bot token.
- Frontend читает
window.Telegram.WebApp.initData. - Отправляет его в API.
- Backend сверяет hash.
- Только после проверки создаёт session/JWT.
4. Авторизация и сессия
После успешной проверки initData backend создаёт короткую сессию. Не храни роль пользователя только на frontend: роли, тарифы, права на разделы и лимиты должны проверяться API.
POST /api/auth/telegram
body: { initData: "..." }
response: { accessToken, user, expiresAt }5. API для Mini App
Сделай API маленькими и предсказуемыми. Mini App должен быстро открываться даже на телефоне, поэтому первый экран загружает только нужный минимум.
GET /api/me— пользователь и права.GET /api/dashboard— данные первого экрана.POST /api/orders— действие пользователя.GET /api/orders/{id}— статус долгой операции.
6. UX минимум
- Кнопка назад работает внутри Mini App.
- Ошибки API показываются пользователю понятно.
- Формы сохраняют draft, если связь пропала.
- Loading states есть у всех действий.
- Theme params Telegram учитываются в UI.
Production checklist
- HTTPS и корректные CORS правила.
- initData validation на каждом login.
- Rate limit на важные endpoints.
- Логи действий пользователя.
- Отдельный staging bot для тестов.