# 🚀 Разработка и тестирование всей системы ## 📋 Что запускаем: 1. **Backend** (Go) - API сервер на порту 8080 2. **Frontend** (React) - Веб-приложение на порту 5173 3. **Bot** (Python) - Telegram бот ## 🔧 Предварительные настройки ### 1. Backend ```bash cd backend cp .env.example .env # Настройте .env: # - DATABASE_URL=postgres://user:password@localhost:5432/quiz_app?sslmode=disable # - REDIS_URL=redis://localhost:6379/0 # - SECRET_KEY=your-very-secret-key # - PORT=8080 ``` ### 2. Frontend ```bash cd frontend cp .env.example .env # Настройте .env: # - VITE_API_BASE_URL=http://localhost:8080/api ``` ### 3. Bot ```bash cd bot cp .env.example .env # Настройте .env: # - BOT_TOKEN=ваш_токен_бота # - BACKEND_API_URL=http://localhost:8080 # - FRONTEND_URL=http://localhost:5173 # - BOT_USERNAME=ваш_бот_юзернейм # - ADMIN_USER_IDS=ваш_telegram_id ``` ## 🚀 Запуск системы ### Вариант 1: Ручной запуск (рекомендуется для разработки) Откройте 3 отдельных терминала: **Терминал 1 - Backend:** ```bash cd backend go run cmd/server/main.go ``` Должен увидеть: `Server running on port 8080` **Терминал 2 - Frontend:** ```bash cd frontend pnpm install pnpm dev ``` Должен увидеть: `Local: http://localhost:5173/` **Терминал 3 - Bot:** ```bash cd bot pip install -r requirements.txt python bot.py ``` Должен увидеть: `Starting bot @YourBotUsername` ### Вариант 2: Одновременный запуск (с помощью tmux) ```bash # Создайте новую tmux сессию tmux new-session -s quiz-app # Разделите окно на 3 панели tmux split-window -h tmux split-window -v # В каждой панели запустите свой компонент # Верхняя левая: Backend cd backend && go run cmd/server/main.go # Верхняя правая: Frontend cd frontend && pnpm dev # Нижняя: Bot cd bot && python bot.py # Переключение между панелями: Ctrl+B + стрелки # Отключиться от сессии: Ctrl+B + D # Подключиться обратно: tmux attach -t quiz-app ``` ### Вариант 3: С помощью Docker Compose (если настроено) ```bash docker-compose up -d ``` ## 🧪 Тестирование ### 1. Проверка Backend API ```bash curl http://localhost:8080/health # Должен вернуть статус 200 ``` ### 2. Проверка Frontend Откройте в браузере: http://localhost:5173 ### 3. Проверка Bot Найдите вашего бота в Telegram: @YourBotUsername Отправьте команду `/start` ## 🎫 Тестирование QR-кодов ### Шаг 1: Создайте тестового администратора 1. Получите ваш Telegram User ID: `@userinfobot` 2. Добавьте его в `bot/.env`: `ADMIN_USER_IDS=ваш_id` ### Шаг 2: Сгенерируйте QR-коды через бота ``` /admin → Генерировать QR-коды → Выберите тип: reward → Введите сумму: 50 → Получите токены ``` ### Шаг 3: Протестируйте сканирование 1. Откройте фронтенд: http://localhost:5173 2. Перейдите на страницу QR-сканера 3. Создайте QR-код с одним из токенов 4. Отсканируйте его через приложение ### Шаг 4: Проверьте интеграцию - QR-код должен быть успешно отсканирован - Должны появиться звезды на балансе - В backend должны появиться записи о сканировании ## 🔍 Отладка ### Проверьте логи: ```bash # Backend логи (в терминале) # Tail логи если запущено как сервис tail -f /var/log/quiz-app/backend.log # Frontend логи (в консоли браузера) # Откройте DevTools → Console # Bot логи (в терминале) ``` ### Общие проблемы: 1. **Порт занят**: `lsof -i :8080` и `kill -9 PID` 2. **Backend не запущен**: Frontend не сможет подключиться к API 3. **Bot не запущен**: Telegram команды не будут работать 4. **База данных**: Убедитесь, что PostgreSQL и Redis запущены ## 📱 Тестирование на мобильном ### Доступ к локальному серверу с телефона: 1. **Wi-Fi сеть**: телефон и компьютер должны быть в одной сети 2. **IP адрес**: `ifconfig` или `ipconfig` чтобы узнать IP 3. **Настройте .env файлы**: ``` # Frontend .env VITE_API_BASE_URL=http://192.168.1.100:8080/api # Bot .env BACKEND_API_URL=http://192.168.1.100:8080 FRONTEND_URL=http://192.168.1.100:5173 ``` ### Telegram Web App: 1. Откройте бота в Telegram 2. Нажмите на кнопку "Открыть Викторины" 3. Должно открыться веб-приложение ## ✅ Проверочный чеклист - [ ] Backend запущен на порту 8080 - [ ] Frontend запущен на порту 5173 - [ ] Bot запущен и отвечает на команды - [ ] База данных PostgreSQL работает - [ ] Redis работает - [ ] QR-коды генерируются через бота - [ ] QR-коды сканируются через фронтенд - [ ] Баллы начисляются за сканирование - [ ] Викторины работают корректно - [ ] Магазин призов функционирует ## 🛑 Остановка ### Ручная остановка: ```bash # В каждом терминале нажмите Ctrl+C ``` ### Через tmux: ```bash tmux kill-session -t quiz-app ``` ### Через Docker: ```bash docker-compose down ``` ## 🚨 Частые проблемы ### Backend не стартует: - Проверьте PostgreSQL и Redis: `brew services list` - Проверьте порты: `lsof -i :8080` - Проверьте .env файл ### Frontend не видит API: - Проверьте VITE_API_BASE_URL в .env - Убедитесь, что backend запущен - Проверьте CORS настройки в backend ### Bot не работает: - Проверьте BOT_TOKEN - Убедитесь, что бот не заблокирован - Проверьте права доступа к API ### QR-коды не сканируются: - Проверьте права доступа к камере - Убедитесь, что backend API доступен - Проверьте формат токенов