# NakamaSpace - Инструкция по установке и запуску ## 📋 Требования - Node.js 16+ и npm - MongoDB 5+ - Telegram Bot Token (получить у [@BotFather](https://t.me/BotFather)) ## 🚀 Установка ### 1. Установить зависимости ```bash # Установка зависимостей backend npm install # Установка зависимостей frontend cd frontend npm install cd .. ``` ### 2. Настроить переменные окружения Создайте файл `.env` в корне проекта: ```bash cp .env.example .env ``` Отредактируйте `.env`: ``` MONGODB_URI=mongodb://localhost:27017/nakama PORT=3000 JWT_SECRET=your_secret_key_here TELEGRAM_BOT_TOKEN=your_bot_token_here NODE_ENV=development ``` Создайте файл `frontend/.env`: ```bash cp frontend/.env.example frontend/.env ``` ### 3. Запустить MongoDB ```bash # macOS с Homebrew brew services start mongodb-community # Linux sudo systemctl start mongod # Или запустите вручную mongod --dbpath /path/to/data/directory ``` ### 4. Создать Telegram бота 1. Откройте [@BotFather](https://t.me/BotFather) в Telegram 2. Отправьте `/newbot` и следуйте инструкциям 3. Получите токен бота и добавьте в `.env` 4. Настройте Web App: - `/mybots` → выберите бота → Bot Settings → Menu Button - Укажите URL вашего приложения ## 🏃 Запуск приложения ### Режим разработки ```bash # Запустить backend и frontend одновременно npm run dev # Или запустить по отдельности: # Backend (http://localhost:3000) npm run server # Frontend (http://localhost:5173) npm run client ``` ### Production ```bash # Собрать frontend npm run build # Запустить production сервер npm start ``` ## 🔧 Настройка Telegram Mini App ### Локальная разработка Для тестирования локально: 1. Используйте ngrok или подобный туннель: ```bash ngrok http 5173 ``` 2. Скопируйте HTTPS URL от ngrok 3. Настройте Menu Button в BotFather с этим URL ### Production деплой Рекомендуемые платформы: - **Backend**: Railway, Render, Heroku - **Frontend**: Vercel, Netlify - **MongoDB**: MongoDB Atlas Пример деплоя на Railway: ```bash # Установить Railway CLI npm i -g @railway/cli # Войти railway login # Создать проект railway init # Деплой railway up ``` ## 📱 Тестирование 1. Откройте бота в Telegram 2. Нажмите на кнопку меню или отправьте команду 3. Приложение откроется как Mini App ## 🛠️ Структура проекта ``` nakama/ ├── backend/ # Backend сервер │ ├── models/ # MongoDB модели │ ├── routes/ # API endpoints │ ├── middleware/ # Middleware (auth, etc) │ └── server.js # Точка входа ├── frontend/ # Frontend React приложение │ ├── src/ │ │ ├── components/ # React компоненты │ │ ├── pages/ # Страницы-вкладки │ │ ├── utils/ # Утилиты (API, Telegram) │ │ └── styles/ # CSS стили │ └── index.html └── package.json ``` ## 🎨 Дизайн-система Проект использует минималистичный iOS-стиль с палитрой: - **Фон**: #F2F3F5 - **Карточки**: #FFFFFF - **Текст**: #1C1C1E - **Furry теги**: #FF8A33 - **Anime теги**: #4A90E2 - **Other теги**: #A0A0A0 ## 🔐 Модерация Для назначения модераторов/админов: ```javascript // Подключиться к MongoDB mongo nakama // Обновить роль пользователя db.users.updateOne( { telegramId: "YOUR_TELEGRAM_ID" }, { $set: { role: "admin" } } ) ``` Роли: - `user` - обычный пользователь - `moderator` - может модерировать контент - `admin` - полные права ## 📚 API Документация ### Основные endpoints: #### Авторизация - `POST /api/auth/verify` - Верификация Telegram Init Data #### Посты - `GET /api/posts` - Получить ленту постов - `POST /api/posts` - Создать пост - `POST /api/posts/:id/like` - Лайкнуть пост - `POST /api/posts/:id/comment` - Добавить комментарий - `POST /api/posts/:id/repost` - Репостнуть - `DELETE /api/posts/:id` - Удалить пост #### Пользователи - `GET /api/users/:id` - Получить профиль - `GET /api/users/:id/posts` - Получить посты пользователя - `POST /api/users/:id/follow` - Подписаться/отписаться - `PUT /api/users/profile` - Обновить профиль - `GET /api/users/search/:query` - Поиск пользователей #### Уведомления - `GET /api/notifications` - Получить уведомления - `PUT /api/notifications/:id/read` - Отметить как прочитанное - `PUT /api/notifications/read-all` - Прочитать все #### Поиск - `GET /api/search/furry?query=tags` - Поиск в e621 - `GET /api/search/anime?query=tags` - Поиск в gelbooru - `GET /api/search/furry/tags?query=tag` - Автокомплит тегов e621 - `GET /api/search/anime/tags?query=tag` - Автокомплит тегов gelbooru - `GET /api/search/proxy/:encodedUrl` - Проксирование изображений с e621/gelbooru (для доступа из РФ) #### Модерация - `POST /api/moderation/report` - Создать жалобу - `GET /api/moderation/reports` - Получить жалобы (модераторы) - `PUT /api/moderation/reports/:id` - Обработать жалобу - `PUT /api/moderation/posts/:id/nsfw` - Установить NSFW флаг - `PUT /api/moderation/users/:id/ban` - Заблокировать пользователя ## ⚠️ Troubleshooting ### MongoDB не подключается ```bash # Проверить статус brew services list # macOS sudo systemctl status mongod # Linux # Проверить порт lsof -i :27017 ``` ### CORS ошибки Убедитесь что `VITE_API_URL` в `frontend/.env` указывает на правильный адрес backend ### Telegram Init Data invalid В dev режиме проверка отключена, но для production нужен валидный `TELEGRAM_BOT_TOKEN` ## 📞 Поддержка Если возникли проблемы: 1. Проверьте логи: `npm run server` 2. Откройте DevTools в браузере 3. Проверьте MongoDB подключение 4. Убедитесь что все переменные окружения установлены ## 🎉 Готово! Приложение должно работать! Откройте бота в Telegram и начните использовать NakamaSpace.