Files
Team-status-board/start.sh

150 lines
4.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
set -e
echo "🚀 Team Status Board - Запуск приложения"
echo "========================================="
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
# Функция проверки наличия команды
command_exists() {
command -v "$1" >/dev/null 2>&1
}
# Определение команды Python (с проверкой pip)
PYTHON_CMD=""
for cmd in python3 py python; do
if command_exists "$cmd" && "$cmd" -m pip --version >/dev/null 2>&1; then
PYTHON_CMD="$cmd"
break
fi
done
if [ -z "$PYTHON_CMD" ]; then
echo "❌ Python или pip не найден. Установите Python 3.8+"
echo " Windows: https://www.python.org/downloads/"
echo " При установке отметьте 'Add Python to PATH'"
exit 1
fi
echo "✓ Python найден: $($PYTHON_CMD --version)"
# Проверка Node.js
if ! command_exists node; then
echo "❌ Node.js не найден. Установите Node.js 18+"
exit 1
fi
echo "✓ Node.js найден: $(node --version)"
# Проверка npm
if ! command_exists npm; then
echo "❌ npm не найден. Установите npm"
exit 1
fi
echo "✓ npm найден: $(npm --version)"
# Создание и активация venv для бэкенда
if [ ! -d "backend/venv" ]; then
echo "📦 Создание виртуального окружения Python..."
$PYTHON_CMD -m venv backend/venv
fi
echo "✓ Виртуальное окружение готово"
# Активация venv (разные способы для Linux/WSL и Windows)
if [ -f "backend/venv/bin/activate" ]; then
source backend/venv/bin/activate
elif [ -f "backend/venv/Scripts/activate" ]; then
source backend/venv/Scripts/activate
else
echo "❌ Не найдено окружение venv"
exit 1
fi
# Установка зависимостей Python
echo "📦 Установка Python зависимостей..."
pip install --quiet -r backend/requirements.txt
echo "✓ Python зависимости установлены"
# Установка зависимостей Node.js
echo "📦 Установка Node.js зависимостей..."
cd frontend
if [ ! -d "node_modules" ]; then
npm install --silent
fi
echo "✓ Node.js зависимости установлены"
cd ..
# Определение порта для бэкенда
BACKEND_PORT=8000
FRONTEND_PORT=3000
# Проверка и освобождение портов (опционально)
if command_exists lsof; then
if lsof -i :$BACKEND_PORT >/dev/null 2>&1; then
echo "⚠️ Порт $BACKEND_PORT уже занят,Attempting to kill process..."
lsof -ti :$BACKEND_PORT | xargs kill -9 2>/dev/null || true
sleep 1
fi
if lsof -i :$FRONTEND_PORT >/dev/null 2>&1; then
echo "⚠️ Порт $FRONTEND_PORT уже занят, attempting to kill process..."
lsof -ti :$FRONTEND_PORT | xargs kill -9 2>/dev/null || true
sleep 1
fi
fi
# Удаление старой базы данных для чистого запуска (опционально)
if [ -f "backend/team_status.db" ]; then
echo "🗑️ Найдена существующая база данных, будет создана новая..."
rm backend/team_status.db
fi
echo ""
echo "========================================="
echo "🔙 Запуск бэкенда (FastAPI)..."
echo "🎨 Запуск фронтенда (React + Vite)..."
echo "========================================="
echo ""
# Запуск бэкенда в фоне
cd backend
$PYTHON_CMD main.py &
BACKEND_PID=$!
cd ..
# Ожидание запуска бэкенда
echo "⏳ Ожидание запуска бэкенда..."
sleep 3
# Проверка работоспособности бэкенда
if command_exists curl; then
if curl -s http://localhost:$BACKEND_PORT/api/employees >/dev/null 2>&1; then
echo "✓ Бэкенд запущен успешно"
else
echo "⚠️ Бэкенд может быть недоступен, проверьте логи"
fi
fi
# Запуск фронтенда
cd frontend
npm run dev &
FRONTEND_PID=$!
cd ..
echo ""
echo "========================================="
echo "✅ Приложение запущено!"
echo ""
echo "🌐 Фронтенд: http://localhost:$FRONTEND_PORT"
echo "🔌 Бэкенд API: http://localhost:$BACKEND_PORT"
echo "📚 API Docs: http://localhost:$BACKEND_PORT/docs"
echo ""
echo "PID бэкенда: $BACKEND_PID"
echo "PID фронтенда: $FRONTEND_PID"
echo ""
echo "Для остановки нажмите Ctrl+C"
echo "========================================="
# Ожидание завершения
wait