#!/bin/bash # Script to create a new Frappe site with Academy apps set -e # Check if site name is provided if [ -z "$1" ]; then echo "โŒ Usage: $0 " echo "Example: $0 academy.example.com" exit 1 fi SITE_NAME=$1 echo "๐ŸŒ Creating new site: $SITE_NAME" # Load environment variables if [ -f .env ]; then export $(cat .env | grep -E '^[A-Z_][A-Z0-9_]*=' | sed 's/#.*$//' | xargs) else echo "โŒ .env file not found. Please create it from .env.example" exit 1 fi # Create the site echo "๐Ÿ“ฆ Creating Frappe site..." docker compose exec -T backend bench new-site \ --no-mariadb-socket \ --admin-password="$ADMIN_PASSWORD" \ --db-root-password="$MARIADB_ROOT_PASSWORD" \ "$SITE_NAME" # Install AI Tutor Chat echo "๐Ÿ“ฆ Installing AI Tutor Chat..." docker compose exec -T backend bench --site "$SITE_NAME" install-app ai_tutor_chat # Install LMS echo "๐Ÿ“ฆ Installing Academy LMS..." docker compose exec -T backend bench --site "$SITE_NAME" install-app lms # Download Payments App echo "๐Ÿ“ฆ Downloading Payments App..." docker compose exec -T backend bench get-app payments # Ensure Payments is installed into the Python environment (editable install) echo "๐Ÿ Installing Payments Python package into venv..." docker compose exec -T backend bash -lc 'cd /home/frappe/frappe-bench && pip install -e apps/payments && python -c "import payments;"' # Install Payments App echo "๐Ÿ“ฆ Installing Payments App..." docker compose exec -T backend bench --site "$SITE_NAME" install-app payments # Set as default site (optional) SET_DEFAULT_SITE_FLAG="${2:-n}" echo if [[ $SET_DEFAULT_SITE_FLAG =~ ^[Yy]$ ]]; then docker compose exec -T backend bench use "$SITE_NAME" echo "โœ… Set as default site" fi # Clear cache echo "๐Ÿงน Clearing cache..." docker compose exec -T backend bench --site "$SITE_NAME" clear-cache # Run migrations echo "๐Ÿ”„ Running migrations..." docker compose exec -T backend bench --site "$SITE_NAME" migrate # Restarting backend docker compose restart backend echo "โœ… Site created successfully!" echo "" echo "๐Ÿ“‹ Site details:" echo "URL: http://$SITE_NAME" echo "Username: Administrator" echo "Password: $ADMIN_PASSWORD" echo "" echo "๐Ÿ” Remember to:" echo "1. Update your DNS to point to the server IP" echo "2. Configure SSL certificate for production" echo "3. Update nginx configuration if needed"