# MyBeacon - Quick Start Guide ## 🚀 Запуск всего проекта ### Самый простой способ (оба сервиса сразу) ```bash # Development режим (frontend интерактивный) ./start-all.sh dev # Background режим (всё в фоне) ./start-all.sh background # Посмотреть логи ./start-all.sh logs # Остановить всё ./start-all.sh stop # Статус ./start-all.sh status ``` --- ## 🔧 Запуск по отдельности ### Backend ```bash cd backend # Development с auto-reload ./start.sh dev # Production (4 воркера) ./start.sh prod # В фоне ./start.sh background # Остановить ./start.sh stop # Статус ./start.sh status ``` **Кастомизация:** ```bash # Другой порт PORT=8001 ./start.sh dev # Другой хост HOST=127.0.0.1 PORT=9000 ./start.sh background # Debug логи LOG_LEVEL=debug ./start.sh dev ``` **Логи:** - Dev: `/tmp/backend_dev.log` - Background: `/tmp/backend_live.log` - Production: `/var/log/mybeacon/backend.log` --- ### Frontend ```bash cd frontend # Development server ./start.sh dev # В фоне ./start.sh background # Build production ./start.sh build # Preview production build ./start.sh preview # Остановить ./start.sh stop # Очистить кеш ./start.sh clean # Установить/обновить зависимости ./start.sh install ``` **Кастомизация:** ```bash # Другой порт PORT=3000 ./start.sh dev # Другой хост HOST=192.168.5.4 PORT=5173 ./start.sh dev ``` **Логи:** - Background: `/tmp/frontend_dev.log` --- ## 📦 Первый запуск ### 1. Установка зависимостей **Backend:** ```bash cd backend poetry install ``` **Frontend:** ```bash cd frontend npm install ``` ### 2. Настройка окружения Создай `.env` файл в `backend/`: ```bash cd backend cp .env.example .env # Отредактируй .env если нужно ``` ### 3. Запуск баз данных **PostgreSQL:** ```bash sudo systemctl start postgresql sudo systemctl enable postgresql # Создать БД sudo -u postgres psql CREATE USER mybeacon WITH PASSWORD 'mybeacon'; CREATE DATABASE mybeacon OWNER mybeacon; \q ``` **ClickHouse:** ```bash sudo systemctl start clickhouse-server sudo systemctl enable clickhouse-server # Создать БД clickhouse-client -q "CREATE DATABASE IF NOT EXISTS mybeacon" ``` **Redis:** ```bash sudo systemctl start redis sudo systemctl enable redis ``` ### 4. Миграции ```bash cd backend poetry run alembic upgrade head ``` ### 5. Создать superadmin ```bash cd backend poetry run python3 -c " from app.core.database import async_session_maker from app.models.user import User from app.core.security import get_password_hash from datetime import datetime, timezone import asyncio async def create_superadmin(): async with async_session_maker() as db: admin = User( email='superadmin@mybeacon.com', hashed_password=get_password_hash('superadmin123'), full_name='Super Admin', role='superadmin', status='active', email_verified=True, created_at=datetime.now(timezone.utc) ) db.add(admin) await db.commit() print('✅ Superadmin created: superadmin@mybeacon.com / superadmin123') asyncio.run(create_superadmin()) " ``` ### 6. Запуск! ```bash # Из корня проекта ./start-all.sh dev ``` --- ## 🌐 URL-адреса - **Frontend**: http://localhost:5173 - **Backend API**: http://localhost:8000 - **API Docs**: http://localhost:8000/docs - **ReDoc**: http://localhost:8000/redoc --- ## 📊 Мониторинг ### Проверка статуса ```bash # Все сервисы ./start-all.sh status # Backend отдельно cd backend && ./start.sh status # Frontend отдельно cd frontend && ./start.sh status ``` ### Логи ```bash # Все логи сразу ./start-all.sh logs # Backend tail -f /tmp/backend_live.log # Frontend tail -f /tmp/frontend_dev.log ``` ### Процессы ```bash # Backend ps aux | grep uvicorn # Frontend ps aux | grep vite ``` --- ## 🛠️ Команды разработчика ### Backend ```bash cd backend # Форматирование кода poetry run black app/ # Проверка кода poetry run ruff app/ # Тесты poetry run pytest # Новая миграция poetry run alembic revision --autogenerate -m "description" # Применить миграции poetry run alembic upgrade head # Откатить миграцию poetry run alembic downgrade -1 ``` ### Frontend ```bash cd frontend # Линтинг npm run lint # Форматирование npm run format # Проверка типов npm run type-check # Build npm run build # Preview build npm run preview ``` --- ## 🐛 Troubleshooting ### Backend не стартует ```bash # Проверь .env cat backend/.env # Проверь БД подключение cd backend poetry run python3 -c "from app.core.database import engine; print('OK')" # Проверь порт 8000 sudo netstat -tlnp | grep 8000 # Убей старые процессы pkill -f uvicorn ``` ### Frontend не стартует ```bash # Проверь node_modules cd frontend ls node_modules/ | wc -l # Должно быть > 0 # Переустанови rm -rf node_modules package-lock.json npm install # Проверь порт 5173 sudo netstat -tlnp | grep 5173 # Убей старые процессы pkill -f vite ``` ### Очистка всего ```bash # Останови всё ./start-all.sh stop # Очисти кеши cd backend find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null find . -type f -name "*.pyc" -delete 2>/dev/null cd ../frontend rm -rf node_modules/.vite dist ``` --- ## 📝 Полезные алиасы Добавь в `~/.bashrc` или `~/.zshrc`: ```bash # MyBeacon alias mb-start='cd ~/work/luckfox/alpine/mybeacon-backend && ./start-all.sh background' alias mb-stop='cd ~/work/luckfox/alpine/mybeacon-backend && ./start-all.sh stop' alias mb-logs='cd ~/work/luckfox/alpine/mybeacon-backend && ./start-all.sh logs' alias mb-status='cd ~/work/luckfox/alpine/mybeacon-backend && ./start-all.sh status' # Backend alias mb-be='cd ~/work/luckfox/alpine/mybeacon-backend/backend' alias mb-be-logs='tail -f /tmp/backend_live.log' # Frontend alias mb-fe='cd ~/work/luckfox/alpine/mybeacon-backend/frontend' alias mb-fe-logs='tail -f /tmp/frontend_dev.log' ``` Потом: `source ~/.bashrc` Использование: ```bash mb-start # Запустить всё mb-status # Статус mb-logs # Логи mb-stop # Остановить ``` --- ## 🎯 Production Deployment ### systemd service для Backend ```bash sudo cp backend/systemd/mybeacon-api.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable mybeacon-api sudo systemctl start mybeacon-api ``` ### Nginx для Frontend ```bash # Build frontend cd frontend npm run build # Copy to nginx sudo cp -r dist /var/www/mybeacon-frontend # Setup nginx sudo cp nginx/mybeacon.conf /etc/nginx/sites-available/ sudo ln -s /etc/nginx/sites-available/mybeacon.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx ``` --- Готово! 🎉