non-building checkpoint 1
This commit is contained in:
253
run_webapp.sh
Executable file
253
run_webapp.sh
Executable file
@@ -0,0 +1,253 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Daily Journal Prompt Generator - Web Application Runner
|
||||
# This script helps you run the web application with various options
|
||||
|
||||
set -e
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
print_header() {
|
||||
echo -e "${BLUE}"
|
||||
echo "=========================================="
|
||||
echo "Daily Journal Prompt Generator - Web App"
|
||||
echo "=========================================="
|
||||
echo -e "${NC}"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}✓ $1${NC}"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}⚠ $1${NC}"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}✗ $1${NC}"
|
||||
}
|
||||
|
||||
check_dependencies() {
|
||||
print_header
|
||||
echo "Checking dependencies..."
|
||||
|
||||
# Check Docker
|
||||
if command -v docker &> /dev/null; then
|
||||
print_success "Docker is installed"
|
||||
else
|
||||
print_warning "Docker is not installed. Docker is recommended for easiest setup."
|
||||
fi
|
||||
|
||||
# Check Docker Compose
|
||||
if command -v docker-compose &> /dev/null || docker compose version &> /dev/null; then
|
||||
print_success "Docker Compose is available"
|
||||
else
|
||||
print_warning "Docker Compose is not available"
|
||||
fi
|
||||
|
||||
# Check Python
|
||||
if command -v python3 &> /dev/null; then
|
||||
PYTHON_VERSION=$(python3 --version | cut -d' ' -f2)
|
||||
print_success "Python $PYTHON_VERSION is installed"
|
||||
else
|
||||
print_error "Python 3 is not installed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check Node.js
|
||||
if command -v node &> /dev/null; then
|
||||
NODE_VERSION=$(node --version)
|
||||
print_success "Node.js $NODE_VERSION is installed"
|
||||
else
|
||||
print_warning "Node.js is not installed (needed for frontend development)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
setup_environment() {
|
||||
echo "Setting up environment..."
|
||||
|
||||
if [ ! -f ".env" ]; then
|
||||
if [ -f ".env.example" ]; then
|
||||
cp .env.example .env
|
||||
print_success "Created .env file from template"
|
||||
print_warning "Please edit .env file and add your API keys"
|
||||
else
|
||||
print_error ".env.example not found"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
print_success ".env file already exists"
|
||||
fi
|
||||
|
||||
# Check data directory
|
||||
if [ ! -d "data" ]; then
|
||||
mkdir -p data
|
||||
print_success "Created data directory"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
}
|
||||
|
||||
run_docker() {
|
||||
print_header
|
||||
echo "Starting with Docker Compose..."
|
||||
echo ""
|
||||
|
||||
if command -v docker-compose &> /dev/null; then
|
||||
docker-compose up --build
|
||||
elif docker compose version &> /dev/null; then
|
||||
docker compose up --build
|
||||
else
|
||||
print_error "Docker Compose is not available"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
run_backend() {
|
||||
print_header
|
||||
echo "Starting Backend API..."
|
||||
echo ""
|
||||
|
||||
cd backend
|
||||
|
||||
# Check virtual environment
|
||||
if [ ! -d "venv" ]; then
|
||||
print_warning "Creating Python virtual environment..."
|
||||
python3 -m venv venv
|
||||
fi
|
||||
|
||||
# Activate virtual environment
|
||||
if [ -f "venv/bin/activate" ]; then
|
||||
source venv/bin/activate
|
||||
elif [ -f "venv/Scripts/activate" ]; then
|
||||
source venv/Scripts/activate
|
||||
fi
|
||||
|
||||
# Install dependencies
|
||||
if [ ! -f "venv/bin/uvicorn" ]; then
|
||||
print_warning "Installing Python dependencies..."
|
||||
pip install -r requirements.txt
|
||||
fi
|
||||
|
||||
# Run backend
|
||||
print_success "Starting FastAPI backend on http://localhost:8000"
|
||||
echo "API Documentation: http://localhost:8000/docs"
|
||||
echo ""
|
||||
uvicorn main:app --reload --host 0.0.0.0 --port 8000
|
||||
|
||||
cd ..
|
||||
}
|
||||
|
||||
run_frontend() {
|
||||
print_header
|
||||
echo "Starting Frontend..."
|
||||
echo ""
|
||||
|
||||
cd frontend
|
||||
|
||||
# Check node_modules
|
||||
if [ ! -d "node_modules" ]; then
|
||||
print_warning "Installing Node.js dependencies..."
|
||||
npm install
|
||||
fi
|
||||
|
||||
# Run frontend
|
||||
print_success "Starting Astro frontend on http://localhost:3000"
|
||||
echo ""
|
||||
npm run dev
|
||||
|
||||
cd ..
|
||||
}
|
||||
|
||||
run_tests() {
|
||||
print_header
|
||||
echo "Running Backend Tests..."
|
||||
echo ""
|
||||
|
||||
if [ -f "test_backend.py" ]; then
|
||||
python test_backend.py
|
||||
else
|
||||
print_error "test_backend.py not found"
|
||||
fi
|
||||
}
|
||||
|
||||
show_help() {
|
||||
print_header
|
||||
echo "Usage: $0 [OPTION]"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " docker Run with Docker Compose (recommended)"
|
||||
echo " backend Run only the backend API"
|
||||
echo " frontend Run only the frontend"
|
||||
echo " all Run both backend and frontend separately"
|
||||
echo " test Run backend tests"
|
||||
echo " setup Check dependencies and setup environment"
|
||||
echo " help Show this help message"
|
||||
echo ""
|
||||
echo "Examples:"
|
||||
echo " $0 docker # Run full stack with Docker"
|
||||
echo " $0 all # Run backend and frontend separately"
|
||||
echo " $0 setup # Setup environment and check dependencies"
|
||||
echo ""
|
||||
}
|
||||
|
||||
case "${1:-help}" in
|
||||
docker)
|
||||
check_dependencies
|
||||
setup_environment
|
||||
run_docker
|
||||
;;
|
||||
backend)
|
||||
check_dependencies
|
||||
setup_environment
|
||||
run_backend
|
||||
;;
|
||||
frontend)
|
||||
check_dependencies
|
||||
setup_environment
|
||||
run_frontend
|
||||
;;
|
||||
all)
|
||||
check_dependencies
|
||||
setup_environment
|
||||
print_header
|
||||
echo "Starting both backend and frontend..."
|
||||
echo "Backend: http://localhost:8000"
|
||||
echo "Frontend: http://localhost:3000"
|
||||
echo ""
|
||||
echo "Open two terminal windows and run:"
|
||||
echo "1. $0 backend"
|
||||
echo "2. $0 frontend"
|
||||
echo ""
|
||||
;;
|
||||
test)
|
||||
check_dependencies
|
||||
run_tests
|
||||
;;
|
||||
setup)
|
||||
check_dependencies
|
||||
setup_environment
|
||||
print_success "Setup complete!"
|
||||
echo ""
|
||||
echo "Next steps:"
|
||||
echo "1. Edit .env file and add your API keys"
|
||||
echo "2. Run with: $0 docker (recommended)"
|
||||
echo "3. Or run with: $0 all"
|
||||
;;
|
||||
help|--help|-h)
|
||||
show_help
|
||||
;;
|
||||
*)
|
||||
print_error "Unknown option: $1"
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user