YT-AI-Automation / backend /docs /MIGRATION.md
github-actions
Sync Docker Space
5f3e9f5

Migration Guide - Old to New Structure

This document explains the changes from the old structure to the new organized structure.

Structure Changes

Old Structure

project/
β”œβ”€β”€ ai_client.py
β”œβ”€β”€ app.py
β”œβ”€β”€ config.py
β”œβ”€β”€ html_generator.py
β”œβ”€β”€ screenshot_playwright.py
β”œβ”€β”€ system_prompt.txt
β”œβ”€β”€ template.html
β”œβ”€β”€ templates/index.html
β”œβ”€β”€ generated_html/
└── screenshots/

New Structure

project/
β”œβ”€β”€ app.py                      # Updated with new imports
β”œβ”€β”€ start.py                    # New startup script
β”œβ”€β”€ requirements.txt            # Updated dependencies
β”œβ”€β”€ README.md                   # Comprehensive documentation
β”œβ”€β”€ SETUP_GUIDE.md             # Setup instructions
β”‚
β”œβ”€β”€ src/                        # NEW: Source code organization
β”‚   β”œβ”€β”€ core/
β”‚   β”‚   β”œβ”€β”€ ai_client.py       # Moved from root
β”‚   β”‚   └── html_generator.py  # Moved from root
β”‚   └── screenshot_engines/
β”‚       └── playwright_engine.py # Renamed from screenshot_playwright.py
β”‚
β”œβ”€β”€ config/                     # NEW: Configuration folder
β”‚   β”œβ”€β”€ config.py              # Moved from root
β”‚   β”œβ”€β”€ config.example.py      # NEW: Template
β”‚   β”œβ”€β”€ system_prompt.txt      # Moved from root
β”‚   └── template.html          # Moved from root
β”‚
β”œβ”€β”€ static/                     # Frontend assets
β”‚   β”œβ”€β”€ css/styles.css         # NEW: Extracted from index.html
β”‚   β”œβ”€β”€ js/
β”‚   β”‚   β”œβ”€β”€ navigation.js      # NEW: Extracted from index.html
β”‚   β”‚   β”œβ”€β”€ text-to-image.js   # NEW: Extracted from index.html
β”‚   β”‚   β”œβ”€β”€ html-to-image.js   # NEW: Extracted from index.html
β”‚   β”‚   └── utils.js           # NEW: Extracted from index.html
β”‚   └── README.md              # NEW: Frontend documentation
β”‚
β”œβ”€β”€ templates/
β”‚   └── index.html             # Refactored to use external CSS/JS
β”‚
└── output/                     # NEW: Organized output
    β”œβ”€β”€ screenshots/           # Replaces root screenshots/
    └── html/                  # Replaces generated_html/

Import Changes

Old Imports (app.py)

from ai_client import get_ai_response
from html_generator import generate_html
from screenshot_playwright import take_screenshot_playwright

New Imports (app.py)

import sys
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src'))

from core.ai_client import get_ai_response
from core.html_generator import generate_html
from screenshot_engines.playwright_engine import take_screenshot_playwright

Path Changes

Output Folders

Old:

OUTPUT_FOLDER = "screenshots"
HTML_FOLDER = "generated_html"

New:

OUTPUT_FOLDER = "output/screenshots"
HTML_FOLDER = "output/html"

Config Files

Old:

# Direct import
import config

New:

# Import from config folder
sys.path.insert(0, 'config')
import config

Migration Steps

Automatic Migration (Recommended)

The new structure is already set up. Old files remain for reference.

Manual Migration (If needed)

  1. Move core files:

    mkdir -p src/core
    cp ai_client.py src/core/
    cp html_generator.py src/core/
    
  2. Move screenshot engine:

    mkdir -p src/screenshot_engines
    cp screenshot_playwright.py src/screenshot_engines/playwright_engine.py
    
  3. Move config files:

    mkdir -p config
    cp config.py config/
    cp system_prompt.txt config/
    cp template.html config/
    
  4. Create output folders:

    mkdir -p output/screenshots output/html
    
  5. Update app.py with new imports (already done)

  6. Test the application:

    python start.py
    

Backward Compatibility

Old Files

Old files are kept in the root for reference:

  • ai_client.py (use src/core/ai_client.py)
  • html_generator.py (use src/core/html_generator.py)
  • screenshot_playwright.py (use src/screenshot_engines/playwright_engine.py)
  • config.py (use config/config.py)

Old Output Folders

Old output folders still work:

  • screenshots/ (use output/screenshots/)
  • generated_html/ (use output/html/)

You can safely delete old files after verifying the new structure works.

Benefits of New Structure

Organization

  • βœ… Clear separation of concerns
  • βœ… Modular code structure
  • βœ… Easy to navigate

Scalability

  • βœ… Easy to add new tools
  • βœ… Easy to add new screenshot engines
  • βœ… Easy to add new features

Maintainability

  • βœ… Easier to find files
  • βœ… Easier to update code
  • βœ… Easier to debug

Professional

  • βœ… Industry-standard structure
  • βœ… Better for collaboration
  • βœ… Better for version control

Cleanup (Optional)

After verifying everything works, you can remove old files:

# Remove old Python files (keep as backup first!)
# rm ai_client.py
# rm html_generator.py
# rm screenshot_playwright.py
# rm config.py
# rm system_prompt.txt
# rm template.html

# Remove old test files
rm test_*.py
rm check_*.py
rm list_models.py
rm main.py
rm css_template.txt

# Move old output (optional)
# mv screenshots/* output/screenshots/
# mv generated_html/* output/html/
# rmdir screenshots generated_html

Rollback (If needed)

If you need to go back to the old structure:

  1. The old files are still in the root directory
  2. Revert app.py to use old imports
  3. Use old output folders

Testing Checklist

After migration, test:

  • Server starts without errors
  • Text to Image tool works
  • HTML to Image tool works
  • Screenshots are generated
  • HTML files are saved
  • Custom settings work
  • Advanced settings work
  • File serving works

Questions?

If you encounter issues:

  1. Check terminal for error messages
  2. Verify all files are in correct locations
  3. Check imports in app.py
  4. Review SETUP_GUIDE.md