7.4 KiB
7.4 KiB
NakamaSpace - Инструкция по установке и запуску
📋 Требования
- Node.js 16+ и npm
- MongoDB 5+
- Telegram Bot Token (получить у @BotFather)
🚀 Установка
1. Установить зависимости
# Установка зависимостей backend
npm install
# Установка зависимостей frontend
cd frontend
npm install
cd ..
2. Настроить переменные окружения
Создайте файл .env в корне проекта:
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:
cp frontend/.env.example frontend/.env
3. Запустить MongoDB
# macOS с Homebrew
brew services start mongodb-community
# Linux
sudo systemctl start mongod
# Или запустите вручную
mongod --dbpath /path/to/data/directory
4. Создать Telegram бота
- Откройте @BotFather в Telegram
- Отправьте
/newbotи следуйте инструкциям - Получите токен бота и добавьте в
.env - Настройте Web App:
/mybots→ выберите бота → Bot Settings → Menu Button- Укажите URL вашего приложения
🏃 Запуск приложения
Режим разработки
# Запустить backend и frontend одновременно
npm run dev
# Или запустить по отдельности:
# Backend (http://localhost:3000)
npm run server
# Frontend (http://localhost:5173)
npm run client
Production
# Собрать frontend
npm run build
# Запустить production сервер
npm start
🔧 Настройка Telegram Mini App
Локальная разработка
Для тестирования локально:
- Используйте ngrok или подобный туннель:
ngrok http 5173
-
Скопируйте HTTPS URL от ngrok
-
Настройте Menu Button в BotFather с этим URL
Production деплой
Рекомендуемые платформы:
- Backend: Railway, Render, Heroku
- Frontend: Vercel, Netlify
- MongoDB: MongoDB Atlas
Пример деплоя на Railway:
# Установить Railway CLI
npm i -g @railway/cli
# Войти
railway login
# Создать проект
railway init
# Деплой
railway up
📱 Тестирование
- Откройте бота в Telegram
- Нажмите на кнопку меню или отправьте команду
- Приложение откроется как 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
🔐 Модерация
Для назначения модераторов/админов:
// Подключиться к 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- Поиск в e621GET /api/search/anime?query=tags- Поиск в gelbooruGET /api/search/furry/tags?query=tag- Автокомплит тегов e621GET /api/search/anime/tags?query=tag- Автокомплит тегов gelbooruGET /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 не подключается
# Проверить статус
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
📞 Поддержка
Если возникли проблемы:
- Проверьте логи:
npm run server - Откройте DevTools в браузере
- Проверьте MongoDB подключение
- Убедитесь что все переменные окружения установлены
🎉 Готово!
Приложение должно работать! Откройте бота в Telegram и начните использовать NakamaSpace.