nakama/DEV_SETUP.md

286 lines
6.2 KiB
Markdown
Raw Normal View History

2025-12-15 08:04:16 +00:00
# 🔥 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
```
---
**Удачной разработки! 🚀**