nakama/DEV_SETUP.md

6.2 KiB
Raw Permalink Blame History

🔥 Dev Setup - Разработка без Telegram

Эта инструкция для быстрого запуска приложения в режиме разработки БЕЗ проверки Telegram initData.

🚀 Быстрый старт

1. Скопируйте dev конфигурацию

REM Backend
copy .env.development .env

REM Frontend
cd frontend
copy .env.development .env
cd ..

2. Запустите MongoDB

net start 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

3. Установите зависимости (если еще не установлены)

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

4. Запустите приложение

Вариант A - Оба сразу:

npm run dev

Вариант B - Раздельно:

Окно 1 - Backend:

npm run server

Окно 2 - Frontend:

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 можете изменить:

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

Очистка базы данных

mongosh mongodb://localhost:27017/nakama-dev
// Удалить все посты
db.posts.deleteMany({})

// Удалить всех пользователей
db.users.deleteMany({})

// Удалить все уведомления
db.notifications.deleteMany({})

// Полная очистка
db.dropDatabase()

🔄 Переключение обратно на Production режим

1. Скопируйте production конфиг

copy ENV_EXAMPLE.txt .env

2. Настройте .env

DISABLE_TELEGRAM_AUTH=false
TELEGRAM_BOT_TOKEN=your_real_bot_token
MONGODB_URI=your_production_mongodb_uri

3. Перезапустите сервер

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:

console.log('Dev mode:', process.env.DISABLE_TELEGRAM_AUTH === 'true')

В консоли browser:

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"

Проверьте:

REM MongoDB запущен?
net start MongoDB

REM .env содержит правильные настройки?
type .env | findstr DISABLE_TELEGRAM_AUTH

"initData validation failed" даже в dev режиме

Убедитесь:

DISABLE_TELEGRAM_AUTH=true

Перезапустите backend:

npm run server

Frontend не видит mock Telegram

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

VITE_MOCK_TELEGRAM=true

Перезапустите frontend:

cd frontend
npm run dev

Удачной разработки! 🚀