nakama/QUICK_DEV_START.md

222 lines
5.6 KiB
Markdown
Raw Normal View History

2025-12-15 08:04:16 +00:00
# ⚡ Быстрый старт 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`
---
**Быстрого старта! 🚀**