Skip to content

goduni/maxpanel

MaxPanel

Опенсорсная панель управления ботами в мессенджере Макс

License: BSL 1.1 Stars

TelegramЧатGitHub


Что это?

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 prepare

Структура проекта

maxpanel/ 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

Будем рады вашему вкладу! Ознакомьтесь с CONTRIBUTING.md перед созданием PR.

Лицензия

Business Source License 1.1

Бесплатно для внутреннего использования. Перепродажа как коммерческий продукт или управляемый сервис требует отдельной лицензии. Переходит в Apache 2.0 через три года после каждого релиза.


by @goduniblog

About

Опенсорная админ-панель для управления ботами в мессенджере max.ru

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors