nakama/QUICK_DEV_START.md

5.4 KiB
Raw Blame History

Быстрый старт DEV версии (без Telegram)

🚀 Запуск за 5 минут

Шаг 1: Создайте .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:

VITE_API_URL=http://localhost:3000/api
VITE_MOCK_TELEGRAM=true

Шаг 3: Обновите frontend\src\utils\telegram.js

Найдите функцию initTelegramApp и в самом начале добавьте:

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

net start MongoDB

Шаг 5: Установите зависимости

npm install
npm install adm-zip music-metadata
cd frontend
npm install
cd ..

Шаг 6: Запустите приложение

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:
DISABLE_TELEGRAM_AUTH=false
TELEGRAM_BOT_TOKEN=your_real_token
  1. Перезапустите:
npm run server

🆘 Проблемы?

MongoDB не запускается

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 занят

netstat -ano | findstr :3000
taskkill /PID <PID> /F

Dev user не создается

Проверьте .env:

type .env | findstr DISABLE_TELEGRAM_AUTH

Должно быть: DISABLE_TELEGRAM_AUTH=true


Быстрого старта! 🚀