133 lines
5.2 KiB
Markdown
133 lines
5.2 KiB
Markdown
|
|
# Nakama Moderation Panel
|
|||
|
|
|
|||
|
|
Панель модерации для Nakama - полнофункциональный веб-интерфейс для модераторов.
|
|||
|
|
|
|||
|
|
## Возможности
|
|||
|
|
|
|||
|
|
- 📱 **Адаптивный дизайн** - работает на мобильных устройствах и десктопах
|
|||
|
|
- 🌐 **Веб-версия** - доступна как в Telegram WebApp, так и в обычном браузере
|
|||
|
|
- 👥 **Управление пользователями** - просмотр, фильтрация, блокировка пользователей
|
|||
|
|
- 📝 **Управление постами** - редактирование, удаление, пометка артом
|
|||
|
|
- 🚨 **Обработка репортов** - модерация жалоб пользователей
|
|||
|
|
- 💬 **Чат модераторов** - real-time чат для общения между модераторами
|
|||
|
|
- 📢 **Публикация в канал** - публикация контента в Telegram канал
|
|||
|
|
- 👑 **Управление админами** - назначение и снятие администраторов
|
|||
|
|
|
|||
|
|
## Требования
|
|||
|
|
|
|||
|
|
- Node.js 18+
|
|||
|
|
- MongoDB (используется та же БД что и основной проект)
|
|||
|
|
- Доступ к `.env` файлу в корне проекта
|
|||
|
|
|
|||
|
|
## Установка
|
|||
|
|
|
|||
|
|
1. Установите зависимости в корне проекта:
|
|||
|
|
```bash
|
|||
|
|
npm install
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. Установите зависимости фронтенда модерации:
|
|||
|
|
```bash
|
|||
|
|
cd moderation/frontend
|
|||
|
|
npm install
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. Убедитесь, что в корневом `.env` файле настроены:
|
|||
|
|
- `MONGODB_URI` - URI для подключения к MongoDB
|
|||
|
|
- `MODERATION_BOT_TOKEN` - токен бота для модерации
|
|||
|
|
- `MODERATION_OWNER_USERNAMES` - список владельцев (через запятую)
|
|||
|
|
- `MODERATION_PORT` - порт для бэкенда модерации (по умолчанию 3001)
|
|||
|
|
|
|||
|
|
## Запуск
|
|||
|
|
|
|||
|
|
### Development режим
|
|||
|
|
|
|||
|
|
Запустить бэкенд и фронтенд модерации одновременно:
|
|||
|
|
```bash
|
|||
|
|
npm run mod-dev
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Или отдельно:
|
|||
|
|
```bash
|
|||
|
|
# Бэкенд (порт 3001)
|
|||
|
|
npm run mod-server
|
|||
|
|
|
|||
|
|
# Фронтенд (порт 5174)
|
|||
|
|
npm run mod-client
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Production режим
|
|||
|
|
|
|||
|
|
1. Соберите фронтенд:
|
|||
|
|
```bash
|
|||
|
|
npm run mod-build
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. Запустите бэкенд:
|
|||
|
|
```bash
|
|||
|
|
npm run mod-start
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Доступ
|
|||
|
|
|
|||
|
|
### В Telegram
|
|||
|
|
Откройте бота модерации и перейдите в меню веб-приложения.
|
|||
|
|
|
|||
|
|
### В браузере
|
|||
|
|
1. Откройте `http://localhost:5174` (development) или ваш production URL
|
|||
|
|
2. Войдите используя initData из Telegram WebApp или токен доступа
|
|||
|
|
|
|||
|
|
## Структура проекта
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
moderation/
|
|||
|
|
├── backend/
|
|||
|
|
│ └── server.js # Бэкенд сервер модерации
|
|||
|
|
├── frontend/
|
|||
|
|
│ ├── src/
|
|||
|
|
│ │ ├── App.jsx # Главный компонент
|
|||
|
|
│ │ ├── utils/
|
|||
|
|
│ │ │ └── api.js # API клиент
|
|||
|
|
│ │ └── styles.css # Стили с адаптивным дизайном
|
|||
|
|
│ └── vite.config.js # Конфигурация Vite
|
|||
|
|
└── README.md
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Технологии
|
|||
|
|
|
|||
|
|
- **Backend**: Express.js, использует общие middleware и модели из основного бэкенда
|
|||
|
|
- **Frontend**: React, Vite
|
|||
|
|
- **WebSocket**: Socket.io для real-time чата модераторов
|
|||
|
|
- **Стили**: CSS с адаптивными media queries
|
|||
|
|
|
|||
|
|
## Переменные окружения
|
|||
|
|
|
|||
|
|
Модераторский бэкенд использует переменные из корневого `.env`:
|
|||
|
|
|
|||
|
|
- `MONGODB_URI` - подключение к MongoDB
|
|||
|
|
- `MODERATION_BOT_TOKEN` - токен бота
|
|||
|
|
- `MODERATION_OWNER_USERNAMES` - владельцы системы
|
|||
|
|
- `MODERATION_PORT` - порт бэкенда (по умолчанию 3001)
|
|||
|
|
- `MODERATION_CORS_ORIGIN` - CORS origin (опционально)
|
|||
|
|
- Все остальные переменные из основного `.env`
|
|||
|
|
|
|||
|
|
## Адаптивный дизайн
|
|||
|
|
|
|||
|
|
Приложение автоматически адаптируется под разные размеры экранов:
|
|||
|
|
|
|||
|
|
- **Desktop (>1024px)**: Многоколоночный layout, расширенные элементы управления
|
|||
|
|
- **Tablet (768px-1023px)**: Одноколоночный layout с оптимизированными элементами
|
|||
|
|
- **Mobile (<768px)**: Компактный layout, вертикальное меню, сенсорные элементы
|
|||
|
|
|
|||
|
|
## Безопасность
|
|||
|
|
|
|||
|
|
- Все запросы требуют авторизации через Telegram initData
|
|||
|
|
- Используются те же middleware безопасности что и в основном бэкенде
|
|||
|
|
- Rate limiting для защиты от DDoS
|
|||
|
|
- Валидация и санитизация всех входных данных
|
|||
|
|
|
|||
|
|
## Поддержка
|
|||
|
|
|
|||
|
|
При возникновении проблем обращайтесь к владельцу системы.
|
|||
|
|
|