Опенсорсная панель управления ботами в мессенджере Макс
MaxPanel — self-hosted админ-панель для управления ботами в мессенджере Макс. Веб-интерфейс для просмотра диалогов, отправки сообщений, просмотра событий и вызова любых методов API — прямо из браузера.
В отличие от Telegram, Макс позволяет подключать несколько webhook/polling потребителей к одному боту, поэтому панель не ломает существующую инфраструктуру.
- Веб и мобильная версия — адаптивный дизайн, тёмная и светлая тема
- Мультитенантная иерархия — Организация > Проект > Бот с ролевой моделью (owner, admin, member, editor, viewer)
- Просмотр диалогов — пузырьки сообщений в стиле Telegram, рендеринг форматирования, медиа-прокси для видео, пересланные сообщения
- Отправка сообщений — текст с форматированием (жирный, курсив, зачёркнутый, подчёркнутый, код, ссылки), несколько файлов, инлайн-клавиатуры, стикеры, контакты, геолокация
- История чатов — синхронизация последних сообщений из Max API, подгрузка старых сообщений на лету
- Лог событий — все входящие/исходящие события с курсорной пагинацией и автообновлением
- API-консоль — вызов любого метода Max API прямо из браузера
- Два режима получения событий — webhook и long polling
- Gateway API — проксирование API-вызовов через сохранённые токены бота, пуш событий через M2M API
- Безопасность — AES-256-GCM шифрование токенов, JWT с ротацией refresh-токенов, rate limiting, CSP-заголовки
| Слой | Технологии |
|---|---|
| Backend | Rust, Axum 0.8, SQLx 0.8, Tokio, PostgreSQL 16 |
| Frontend | React 19, TypeScript 5, Vite 6, Tailwind CSS 4, shadcn/ui, TanStack Query |
| Инфра | Docker Compose, nginx |
# Клонируйте
git clone https://github.com/goduni/maxpanel.git
cd maxpanel
# Настройте переменные окружения
cp .env.example .env
# Отредактируйте .env — сгенерируйте секреты:
# openssl rand -hex 32 (для BOT_TOKEN_ENCRYPTION_KEY и других секретов)
# Запустите
docker compose up --buildФронтенд: http://localhost:3000 | Backend API: http://localhost:8080 | Swagger UI: http://localhost:8080/swagger-ui
handlers HTTP-слой: парсинг запросов, валидация, форматирование ответов
|
services Бизнес-логика, транзакции, вызовы Max API
|
db Доступ к данным через SQL с проверкой на этапе компиляции (sqlx)
Backend:
- Компайл-тайм проверка SQL через SQLx офлайн-режим
- Партиционированная таблица событий (помесячные автопартиции)
- Фоновые воркеры: супервизор поллинга с backoff, менеджер партиций, очистка токенов
- Rate limiter (token bucket), middleware с security-заголовками
- OpenAPI-документация через utoipa + Swagger UI
Frontend:
- Feature-based структура:
features/{auth,organizations,projects,bots,events,chats,api-console}/ - Трёхуровневая навигация: организация > проект > бот
- Infinite scroll с курсорной пагинацией
- i18n с русской локалью
Полный список — в .env.example.
| Переменная | Описание |
|---|---|
DATABASE_URL |
Строка подключения PostgreSQL |
JWT_SECRET |
HMAC-секрет для JWT (мин. 32 байта) |
BOT_TOKEN_ENCRYPTION_KEY |
32-байтный hex-ключ AES-256 |
WEBHOOK_BASE_URL |
Публичный HTTPS URL для вебхуков |
APP_ENV |
development или production |
# Backend (нужен PostgreSQL)
cd backend
cargo sqlx migrate run
cargo run
# Frontend
cd frontend
npm install
npm run dev
# Тесты
cd backend
cargo test -- --test-threads=1
# Обновление SQL-кеша после изменения запросов
cd backend
cargo sqlx preparemaxpanel/
docker-compose.yml
.env.example
swagger.json # Спецификация Max Bot API (справочник)
backend/
src/
main.rs # Точка входа, запуск воркеров, graceful shutdown
config.rs # Конфигурация из переменных окружения
router.rs # Определение маршрутов
errors.rs # Типизированные ошибки
extractors/ # AuthUser, BotAuthContext
handlers/ # HTTP-обработчики
services/ # Бизнес-логика (crypto, ingestion, max_api, ...)
db/ # SQL-запросы (проверяются при компиляции)
models/ # Row-типы (БД) и Response-типы (API)
workers/ # Поллинг, партиции, очистка
middleware/ # Rate limiter, security headers
migrations/ # PostgreSQL-миграции
.sqlx/ # Офлайн-кеш запросов
frontend/
src/
app/ # Маршруты, провайдеры
components/ # Лейаут, UI (shadcn)
features/ # Auth, orgs, projects, bots, chats, events, console
hooks/ # Infinite scroll, media queries
lib/ # API-клиент, типы, утилиты
stores/ # Zustand (auth, theme, sidebar)
Будем рады вашему вкладу! Ознакомьтесь с CONTRIBUTING.md перед созданием PR.
Бесплатно для внутреннего использования. Перепродажа как коммерческий продукт или управляемый сервис требует отдельной лицензии. Переходит в Apache 2.0 через три года после каждого релиза.
by @goduniblog