7.0 KiB
7.0 KiB
🚀 Разработка и тестирование всей системы
📋 Что запускаем:
- Backend (Go) - API сервер на порту 8080
- Frontend (React) - Веб-приложение на порту 5173
- Bot (Python) - Telegram бот
🔧 Предварительные настройки
1. Backend
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
cd frontend
cp .env.example .env
# Настройте .env:
# - VITE_API_BASE_URL=http://localhost:8080/api
3. Bot
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:
cd backend
go run cmd/server/main.go
Должен увидеть: Server running on port 8080
Терминал 2 - Frontend:
cd frontend
pnpm install
pnpm dev
Должен увидеть: Local: http://localhost:5173/
Терминал 3 - Bot:
cd bot
pip install -r requirements.txt
python bot.py
Должен увидеть: Starting bot @YourBotUsername
Вариант 2: Одновременный запуск (с помощью tmux)
# Создайте новую 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 (если настроено)
docker-compose up -d
🧪 Тестирование
1. Проверка Backend API
curl http://localhost:8080/health
# Должен вернуть статус 200
2. Проверка Frontend
Откройте в браузере: http://localhost:5173
3. Проверка Bot
Найдите вашего бота в Telegram: @YourBotUsername
Отправьте команду /start
🎫 Тестирование QR-кодов
Шаг 1: Создайте тестового администратора
- Получите ваш Telegram User ID:
@userinfobot - Добавьте его в
bot/.env:ADMIN_USER_IDS=ваш_id
Шаг 2: Сгенерируйте QR-коды через бота
/admin
→ Генерировать QR-коды
→ Выберите тип: reward
→ Введите сумму: 50
→ Получите токены
Шаг 3: Протестируйте сканирование
- Откройте фронтенд: http://localhost:5173
- Перейдите на страницу QR-сканера
- Создайте QR-код с одним из токенов
- Отсканируйте его через приложение
Шаг 4: Проверьте интеграцию
- QR-код должен быть успешно отсканирован
- Должны появиться звезды на балансе
- В backend должны появиться записи о сканировании
🔍 Отладка
Проверьте логи:
# Backend логи (в терминале)
# Tail логи если запущено как сервис
tail -f /var/log/quiz-app/backend.log
# Frontend логи (в консоли браузера)
# Откройте DevTools → Console
# Bot логи (в терминале)
Общие проблемы:
- Порт занят:
lsof -i :8080иkill -9 PID - Backend не запущен: Frontend не сможет подключиться к API
- Bot не запущен: Telegram команды не будут работать
- База данных: Убедитесь, что PostgreSQL и Redis запущены
📱 Тестирование на мобильном
Доступ к локальному серверу с телефона:
- Wi-Fi сеть: телефон и компьютер должны быть в одной сети
- IP адрес:
ifconfigилиipconfigчтобы узнать IP - Настройте .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:
- Откройте бота в Telegram
- Нажмите на кнопку "Открыть Викторины"
- Должно открыться веб-приложение
✅ Проверочный чеклист
- Backend запущен на порту 8080
- Frontend запущен на порту 5173
- Bot запущен и отвечает на команды
- База данных PostgreSQL работает
- Redis работает
- QR-коды генерируются через бота
- QR-коды сканируются через фронтенд
- Баллы начисляются за сканирование
- Викторины работают корректно
- Магазин призов функционирует
🛑 Остановка
Ручная остановка:
# В каждом терминале нажмите Ctrl+C
Через tmux:
tmux kill-session -t quiz-app
Через Docker:
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 доступен
- Проверьте формат токенов