#!/bin/bash # Hugging Face Spaces Deployment Script # This script helps set up your FastAPI application for Hugging Face Spaces echo "🚀 Setting up CSS Essay Grader API for Hugging Face Spaces..." # Check if we're in the right directory if [ ! -f "app.py" ]; then echo "❌ Error: app.py not found. Please run this script from the project root directory." exit 1 fi # Create necessary files for Hugging Face Spaces echo "📝 Creating Hugging Face Spaces configuration files..." # Copy the HF-specific app file if [ -f "app_hf.py" ]; then cp app_hf.py app.py echo "✅ Copied app_hf.py to app.py" else echo "⚠️ Warning: app_hf.py not found. Using existing app.py" fi # Copy the HF-specific requirements file if [ -f "requirements_hf.txt" ]; then cp requirements_hf.txt requirements.txt echo "✅ Copied requirements_hf.txt to requirements.txt" else echo "⚠️ Warning: requirements_hf.txt not found. Using existing requirements.txt" fi # Copy the HF-specific Dockerfile if [ -f "Dockerfile.hf" ]; then cp Dockerfile.hf Dockerfile echo "✅ Copied Dockerfile.hf to Dockerfile" else echo "⚠️ Warning: Dockerfile.hf not found. Using existing Dockerfile" fi # Copy the HF-specific README if [ -f "README_hf.md" ]; then cp README_hf.md README.md echo "✅ Copied README_hf.md to README.md" else echo "⚠️ Warning: README_hf.md not found. Using existing README.md" fi # Create .dockerignore if it doesn't exist if [ ! -f ".dockerignore" ]; then echo "📝 Creating .dockerignore file..." cat > .dockerignore << EOF # Git .git .gitignore # Python __pycache__ *.pyc *.pyo *.pyd .Python env pip-log.txt pip-delete-this-directory.txt .tox .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover *.log .git .mypy_cache .pytest_cache .hypothesis # Virtual environments venv/ ENV/ env/ .venv/ # IDE .vscode/ .idea/ *.swp *.swo *~ # OS .DS_Store .DS_Store? ._* .Spotlight-V100 .Trashes ehthumbs.db Thumbs.db # Project specific temp/ output/ *.pdf *.png *.jpg *.jpeg *.gif *.bmp *.tiff *.docx *.txt *.log # Development files test_*.py *_test.py quick-fix.sh optimize-deployment.py deployment-guide.md API_FORMAT_DOCUMENTATION.md EOF echo "✅ Created .dockerignore file" fi # Create necessary directories echo "📁 Creating necessary directories..." mkdir -p temp output echo "✅ Created temp and output directories" # Check for required files echo "🔍 Checking for required files..." required_files=("app.py" "requirements.txt" "Dockerfile" "README.md" "OCR.py" "Feedback.py" "PDFFeedbackGenerator.py" "OCRAccuracyAnalyzer.py") for file in "${required_files[@]}"; do if [ -f "$file" ]; then echo "✅ $file found" else echo "❌ $file missing" fi done # Check for environment variables echo "🔧 Environment Variables Setup:" echo " Make sure to set the following environment variables in your Hugging Face Space:" echo " - OPENAI_API_KEY: Your OpenAI API key" echo " - GOOGLE_CLOUD_CREDENTIALS: Your Google Cloud Vision credentials (JSON)" # Display next steps echo "" echo "🎉 Setup complete! Next steps:" echo "" echo "1. Create a new Hugging Face Space:" echo " - Go to https://huggingface.co/spaces" echo " - Click 'Create new Space'" echo " - Choose 'Docker' as SDK" echo " - Set Space name (e.g., 'css-essay-grader')" echo "" echo "2. Clone the Space repository:" echo " git clone https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME" echo "" echo "3. Copy your files to the Space repository:" echo " cp -r * /path/to/your/space/repo/" echo "" echo "4. Set environment variables in the Space settings:" echo " - OPENAI_API_KEY" echo " - GOOGLE_CLOUD_CREDENTIALS" echo "" echo "5. Commit and push:" echo " cd /path/to/your/space/repo/" echo " git add ." echo " git commit -m 'Initial deployment'" echo " git push" echo "" echo "6. Wait for deployment (usually 5-10 minutes)" echo "" echo "7. Access your API:" echo " https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space" echo " https://YOUR_USERNAME-YOUR_SPACE_NAME.hf.space/docs" echo "" echo "🚀 Your CSS Essay Grader API is ready for Hugging Face Spaces deployment!"