nakama/QUICK_DEV_START.md

222 lines
5.4 KiB
Markdown
Raw Permalink 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 версии (без Telegram)
## 🚀 Запуск за 5 минут
### Шаг 1: Создайте `.env` файл
В корне проекта создайте файл `.env` с содержимым:
```env
DISABLE_TELEGRAM_AUTH=true
NODE_ENV=development
PORT=3000
MONGODB_URI=mongodb://localhost:27017/nakama-dev
JWT_SECRET=dev_jwt_secret_32chars_minimum_length
JWT_ACCESS_SECRET=dev_access_secret_32chars_minimum
JWT_REFRESH_SECRET=dev_refresh_secret_32chars_minimum
TELEGRAM_BOT_TOKEN=
FRONTEND_URL=http://localhost:5173
VITE_API_URL=http://localhost:3000/api
CORS_ORIGIN=*
MINIO_ENABLED=false
RATE_LIMIT_GENERAL=1000
RATE_LIMIT_POSTS=100
```
### Шаг 2: Создайте `frontend\.env`
В папке `frontend` создайте файл `.env`:
```env
VITE_API_URL=http://localhost:3000/api
VITE_MOCK_TELEGRAM=true
```
### Шаг 3: Обновите `frontend\src\utils\telegram.js`
Найдите функцию `initTelegramApp` и в самом начале добавьте:
```javascript
export const initTelegramApp = () => {
// 🔥 DEV MODE: Mock Telegram WebApp
if (import.meta.env.DEV && import.meta.env.VITE_MOCK_TELEGRAM === 'true') {
if (!window.Telegram?.WebApp) {
const mockInitData = 'query_id=mock&user=%7B%22id%22%3A123456789%2C%22first_name%22%3A%22Dev%22%2C%22last_name%22%3A%22User%22%2C%22username%22%3A%22devuser%22%7D&auth_date=1640000000&hash=mockhash';
window.Telegram = {
WebApp: {
initData: mockInitData,
initDataUnsafe: {
user: {
id: 123456789,
first_name: 'Dev',
last_name: 'User',
username: 'devuser'
}
},
version: '7.0',
platform: 'web',
colorScheme: 'light',
themeParams: {},
isExpanded: true,
viewportHeight: 600,
viewportStableHeight: 600,
ready: () => console.log('Mock ready'),
expand: () => {},
close: () => {},
disableVerticalSwipes: () => {},
BackButton: { isVisible: false },
MainButton: { isVisible: false },
HapticFeedback: {
impactOccurred: () => {},
notificationOccurred: () => {},
selectionChanged: () => {}
}
}
};
console.log('✅ Mock Telegram WebApp (DEV MODE)');
}
}
const tg = window.Telegram?.WebApp
// ... остальной код без изменений
```
### Шаг 4: Запустите MongoDB
```cmd
net start MongoDB
```
### Шаг 5: Установите зависимости
```cmd
npm install
npm install adm-zip music-metadata
cd frontend
npm install
cd ..
```
### Шаг 6: Запустите приложение
```cmd
npm run dev
```
### Шаг 7: Откройте браузер
```
http://localhost:5173
```
**Готово!** Приложение работает без Telegram!
---
## 🎯 Что происходит?
1. `DISABLE_TELEGRAM_AUTH=true` - отключает проверку initData на backend
2. `backend/middleware/devAuth.js` - создает тестового пользователя (ID: 123456789)
3. `VITE_MOCK_TELEGRAM=true` - включает mock Telegram WebApp на frontend
4. Mock создает фиктивный `window.Telegram.WebApp` объект
---
## 🧪 Тестирование
### Проверьте что dev режим работает:
**Backend консоль должна показать:**
```
⚠️ DEV MODE ENABLED - Telegram auth disabled!
⚠️ DEV MODE: Telegram auth disabled
✅ Created dev user: DevUser (123456789)
```
**Browser консоль должна показать:**
```
✅ Mock Telegram WebApp (DEV MODE)
```
### Тест API:
Откройте: `http://localhost:3000/api/posts`
Должен вернуться список постов (может быть пустой).
---
## 📁 Структура
```
nakama/
├── .env ← Создайте (dev конфиг)
├── backend/
│ └── middleware/
│ └── devAuth.js ← Уже создан
├── frontend/
│ ├── .env ← Создайте (dev конфиг)
│ └── src/utils/
│ └── telegram.js ← Обновите
├── DEV_SETUP.md ← Подробная инструкция
└── QUICK_DEV_START.md ← Эта инструкция
```
---
## ⚠️ Важно
- **НЕ коммитьте** `.env` файлы в git
- **НЕ используйте** dev конфигурацию в production
- Для production используйте настоящий `TELEGRAM_BOT_TOKEN`
---
## 🔄 Вернуться к production
1. Удалите или измените `.env`:
```env
DISABLE_TELEGRAM_AUTH=false
TELEGRAM_BOT_TOKEN=your_real_token
```
2. Перезапустите:
```cmd
npm run server
```
---
## 🆘 Проблемы?
### 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
```
### Port 3000 занят
```cmd
netstat -ano | findstr :3000
taskkill /PID <PID> /F
```
### Dev user не создается
Проверьте `.env`:
```cmd
type .env | findstr DISABLE_TELEGRAM_AUTH
```
Должно быть: `DISABLE_TELEGRAM_AUTH=true`
---
**Быстрого старта! 🚀**