nakama/DEV_SETUP.md

287 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🔥 Dev Setup - Разработка без Telegram
Эта инструкция для быстрого запуска приложения в режиме разработки БЕЗ проверки Telegram initData.
## 🚀 Быстрый старт
### 1. Скопируйте dev конфигурацию
```cmd
REM Backend
copy .env.development .env
REM Frontend
cd frontend
copy .env.development .env
cd ..
```
### 2. Запустите MongoDB
```cmd
net start MongoDB
```
Или вручную:
```cmd
cd "C:\Program Files\MongoDB\Server\7.0\bin"
if not exist C:\data\db mkdir C:\data\db
mongod --dbpath C:\data\db
```
### 3. Установите зависимости (если еще не установлены)
```cmd
npm install
npm install adm-zip
cd frontend
npm install
cd ..
```
### 4. Запустите приложение
**Вариант A - Оба сразу:**
```cmd
npm run dev
```
**Вариант B - Раздельно:**
Окно 1 - Backend:
```cmd
npm run server
```
Окно 2 - Frontend:
```cmd
cd frontend
npm run dev
```
### 5. Откройте браузер
```
http://localhost:5173
```
✅ Готово! Приложение работает БЕЗ Telegram!
---
## 🔧 Как это работает
### Backend
- `DISABLE_TELEGRAM_AUTH=true` в `.env` отключает проверку initData
- `backend/middleware/devAuth.js` создает тестового пользователя
- Автоматически создается пользователь с ID `123456789`
### Frontend
- `VITE_MOCK_TELEGRAM=true` включает mock Telegram WebApp
- `frontend/src/utils/telegram.js` создает фиктивный `window.Telegram.WebApp`
- Все функции Telegram доступны, но не отправляют реальные запросы
---
## 👤 Тестовые пользователи
### Обычный пользователь
- ID: `123456789`
- Username: `DevUser`
- Имя: `Dev User`
### Модератор (для тестирования модерации)
- ID: `987654321`
- Username: `DevModerator`
- Роль: `moderator`
### Настройка тестового пользователя
В `.env` можете изменить:
```env
DEV_USER_ID=123456789
DEV_USERNAME=MyDevUser
DEV_FIRST_NAME=My
DEV_LAST_NAME=DevUser
```
---
## 📝 Доступные функции в Dev режиме
✅ Создание постов
✅ Комментарии
✅ Лайки
✅ Подписки
✅ Поиск (Furry/Anime/Music)
✅ Загрузка изображений
✅ Загрузка музыки
✅ Музыкальный плеер
✅ Уведомления
✅ Профиль
✅ Настройки
❌ Отправка в Telegram (требует реального бота)
❌ Telegram уведомления
❌ Реферальная система
---
## 🗄️ База данных
В dev режиме используется отдельная база:
```
mongodb://localhost:27017/nakama-dev
```
### Очистка базы данных
```cmd
mongosh mongodb://localhost:27017/nakama-dev
```
```javascript
// Удалить все посты
db.posts.deleteMany({})
// Удалить всех пользователей
db.users.deleteMany({})
// Удалить все уведомления
db.notifications.deleteMany({})
// Полная очистка
db.dropDatabase()
```
---
## 🔄 Переключение обратно на Production режим
### 1. Скопируйте production конфиг
```cmd
copy ENV_EXAMPLE.txt .env
```
### 2. Настройте `.env`
```env
DISABLE_TELEGRAM_AUTH=false
TELEGRAM_BOT_TOKEN=your_real_bot_token
MONGODB_URI=your_production_mongodb_uri
```
### 3. Перезапустите сервер
```cmd
npm run server
```
---
## 🐛 Отладка
### Логи
Backend показывает:
```
⚠️ DEV MODE: Telegram auth disabled
✅ Created dev user: DevUser (123456789)
```
Frontend показывает:
```
✅ Mock Telegram WebApp initialized (DEV MODE)
⚠️ Running in DEV MODE with mock Telegram WebApp
```
### Проверка режима
В консоли backend:
```javascript
console.log('Dev mode:', process.env.DISABLE_TELEGRAM_AUTH === 'true')
```
В консоли browser:
```javascript
console.log('Telegram:', window.Telegram?.WebApp)
console.log('InitData:', window.Telegram?.WebApp?.initData)
```
---
## ⚠️ Важно
1. **НЕ ИСПОЛЬЗУЙТЕ** dev конфигурацию в production
2. **НЕ КОММИТЬТЕ** `.env` в git
3. **НЕ ДЕЛИТЕСЬ** dev токенами если они там есть
4. При деплое используйте `ENV_EXAMPLE.txt` как шаблон
---
## 📚 Структура Dev файлов
```
nakama/
├── .env.development # Dev конфиг backend
├── .env # Текущий конфиг (копия .env.development)
├── backend/
│ └── middleware/
│ └── devAuth.js # Dev middleware
└── frontend/
├── .env.development # Dev конфиг frontend
├── .env # Текущий конфиг
└── src/
└── utils/
└── telegram.js # Содержит mock Telegram WebApp
```
---
## 🆘 Проблемы
### "Dev user not created"
Проверьте:
```cmd
REM MongoDB запущен?
net start MongoDB
REM .env содержит правильные настройки?
type .env | findstr DISABLE_TELEGRAM_AUTH
```
### "initData validation failed" даже в dev режиме
Убедитесь:
```env
DISABLE_TELEGRAM_AUTH=true
```
Перезапустите backend:
```cmd
npm run server
```
### Frontend не видит mock Telegram
Проверьте `frontend\.env`:
```env
VITE_MOCK_TELEGRAM=true
```
Перезапустите frontend:
```cmd
cd frontend
npm run dev
```
---
**Удачной разработки! 🚀**