287 lines
6.2 KiB
Markdown
287 lines
6.2 KiB
Markdown
# 🔥 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
|
||
```
|
||
|
||
---
|
||
|
||
**Удачной разработки! 🚀**
|
||
|
||
|