# 🎨 Nakama Социальная сеть для фурри и аниме сообщества, реализованная как Telegram Mini App. ## 🚀 Возможности - 📝 Создание постов с текстом и изображениями (до 5 шт) - 🔍 Поиск контента через e621 и Gelbooru API - 💬 Комментарии и лайки - 👥 Подписки на пользователей - 🔔 Система уведомлений - 🛡️ Модерация контента - 🗂️ Фильтры и теги (Furry, Anime, Other, NSFW) - 🌙 Темная/светлая тема - 📱 Fullview для изображений - 🗄️ MinIO для хранения медиа ## 🛠️ Технологии **Frontend:** - React + Vite - React Router - Telegram Mini App SDK - Lucide Icons **Backend:** - Node.js + Express - MongoDB - Socket.IO (WebSocket) - MinIO (S3-compatible storage) - Redis (опционально) ## 📦 Установка ### 1. Клонируйте репозиторий ```bash git clone cd nakama ``` ### 2. Настройте переменные окружения ```bash cp ENV_EXAMPLE.txt .env nano .env ``` Заполните обязательные поля: ```env # Telegram Bot TELEGRAM_BOT_TOKEN=ваш_токен_от_BotFather # MongoDB (удаленный сервер) MONGODB_URI=mongodb://103.80.87.247:27017/nakama # JWT секреты (сгенерируйте случайные строки) JWT_ACCESS_SECRET=ваш_секретный_ключ_32_символа JWT_REFRESH_SECRET=другой_секретный_ключ_32_символа # MinIO MINIO_ENABLED=true MINIO_ENDPOINT=103.80.87.247 MINIO_PORT=9000 MINIO_ACCESS_KEY=ваш_access_key MINIO_SECRET_KEY=ваш_secret_key MINIO_PUBLIC_BUCKET=true # Frontend FRONTEND_URL=https://ваш-домен.com CORS_ORIGIN=https://ваш-домен.com,https://web.telegram.org ``` ### 3. Запустите через Docker ```bash docker-compose up -d ``` ### 4. Настройте MinIO (один раз) ```bash chmod +x minio-setup-public.sh ./minio-setup-public.sh ``` ## 🔧 Разработка ```bash # Backend cd backend npm install npm run dev # Frontend cd frontend npm install npm run dev ``` ## 📝 Структура ``` nakama/ ├── backend/ # Node.js API │ ├── models/ # MongoDB модели │ ├── routes/ # API роуты │ ├── middleware/ # Middleware │ ├── utils/ # Утилиты │ └── bot.js # Telegram бот ├── frontend/ # React приложение │ ├── src/ │ │ ├── pages/ # Страницы │ │ ├── components/ # Компоненты │ │ └── utils/ # Утилиты ├── moderation/ # Система модерации │ ├── frontend/ # React админка │ └── backend/ # Доп. API роуты └── docker-compose.yml ``` ## 🐛 Логи ```bash # Все логи docker-compose logs -f # Только backend docker-compose logs -f backend # Ошибки docker-compose logs | grep ERROR ``` Логи также сохраняются в `backend/logs/`: - `all-YYYY-MM-DD.log` - все логи - `error-YYYY-MM-DD.log` - только ошибки - `security-YYYY-MM-DD.log` - события безопасности ## 🔒 Безопасность - JWT авторизация - Валидация Telegram initData - Rate limiting - XSS/NoSQL injection защита - Helmet security headers - CORS настройки ## 📱 Telegram Bot Создайте бота через @BotFather: 1. `/newbot` - создать бота 2. `/setmenubutton` - добавить кнопку запуска Mini App 3. Скопируйте токен в `.env` ## 🗄️ MinIO Для хранения загруженных изображений используется MinIO (S3-compatible). **Важно:** - Порт 9000 - API (для загрузки файлов) - Порт 9001 - Console (веб-интерфейс) - Bucket должен быть публичным для доступа к файлам ## 📊 Мониторинг ```bash # Статус контейнеров docker-compose ps # Использование ресурсов docker stats # Логи MinIO docker-compose logs minio ``` ## 🚀 Production 1. Настройте HTTPS (обязательно для Telegram Mini App!) 2. Измените `JWT_ACCESS_SECRET` и `JWT_REFRESH_SECRET` 3. Настройте firewall 4. Настройте Nginx reverse proxy 5. Включите автоматические бекапы MongoDB ## 📄 Лицензия MIT ## 👥 Поддержка Telegram: @NakamaReportbot