9.8 KiB
9.8 KiB
Sites Container Removal - Quick Reference
Version: 1.0
Date: November 29, 2025
Full Guide: See SITES_REMOVAL_GUIDE.md for complete step-by-step instructions
TL;DR - What Changes
Current Architecture (3 Containers)
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ Sites │ │ Backend │
│ Port: 8021 │ │ Port: 8024 │ │ Port: 8011 │
│ │ │ - Site Builder │ │ │
│ │ │ - Renderer │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
Target Architecture (2 Containers)
┌─────────────────┐ ┌─────────────────┐
│ Frontend │ │ Backend │
│ Port: 8021 │ │ Port: 8011 │
│ - Main App │ │ │
│ - Site Builder │ │ │
│ - Renderer │ │ │
└─────────────────┘ └─────────────────┘
What Gets Removed
❌ Deleted:
/sites/folder (after copying to frontend)/site-builder/folder (empty, deprecated)/frontend/src/modules/siteBuilder/(empty)igny8_sitesDocker container- Port 8024
✅ Kept:
- Backend
/api/v1/site-builder/endpoints - Backend
/api/v1/publisher/endpoints - Backend modules:
site_builder/,publisher/ - Backend business logic:
site_building/,publishing/ - Database tables (no changes)
/data/app/sites-data/directory
What Gets Moved
File Movements
| From (Sites Container) | To (Frontend) |
|---|---|
sites/src/builder/pages/wizard/ |
frontend/src/pages/Sites/Builder/Wizard.tsx |
sites/src/builder/pages/preview/ |
frontend/src/pages/Sites/Builder/Preview.tsx |
sites/src/builder/pages/dashboard/ |
frontend/src/pages/Sites/Builder/Dashboard.tsx |
sites/src/builder/components/layout/ |
frontend/src/components/sites/BuilderLayout.tsx |
sites/src/pages/SiteRenderer.tsx |
frontend/src/pages/Sites/PublicSiteRenderer.tsx |
sites/src/loaders/loadSiteDefinition.ts |
frontend/src/services/siteRenderer.api.ts |
sites/src/utils/layoutRenderer.tsx |
frontend/src/utils/siteRenderer/layoutRenderer.tsx |
sites/src/utils/pageTypeRenderer.tsx |
frontend/src/utils/siteRenderer/pageTypeRenderer.tsx |
sites/src/utils/templateEngine.tsx |
frontend/src/utils/siteRenderer/templateEngine.tsx |
Route Changes
Site Builder Routes
| Old Route (Port 8024) | New Route (Port 8021) | Auth |
|---|---|---|
/builder |
/sites/builder |
Required ✅ |
/builder/preview |
/sites/builder/preview |
Required ✅ |
/builder/dashboard |
/sites/builder/dashboard |
Required ✅ |
Sites Renderer Routes
| Old Route (Port 8024) | New Route (Port 8021) | Auth |
|---|---|---|
/:siteSlug |
/sites/view/:siteSlug |
None ❌ |
/:siteSlug/:pageSlug |
/sites/view/:siteSlug/:pageSlug |
None ❌ |
⚠️ Important: Public site URLs will change! Update any hardcoded links.
Files to Update
Critical Files (Must Update)
-
/frontend/src/App.tsx- Add site builder routes
- Add public renderer routes
- Add lazy imports
-
/docker-compose.app.yml- Remove
igny8_sitesservice - Add
/sites-datavolume mount toigny8_frontend - Add
SITES_DATA_PATHenv var toigny8_frontend
- Remove
-
/frontend/vite.config.ts- Add
SITES_DATA_PATHenvironment variable
- Add
Optional Files (Verify/Update)
-
/backend/igny8_core/settings.py- Verify CORS settings (remove port 8024)
-
/frontend/src/components/sidebar/AppSidebar.tsx- Add site builder menu items
Critical Commands
1. Backup First
cd /data/app/igny8
tar -czf backup-sites-$(date +%Y%m%d-%H%M%S).tar.gz sites/ site-builder/
cp docker-compose.app.yml docker-compose.app.yml.backup
2. Copy Files
# Create directories
mkdir -p frontend/src/pages/Sites/Builder
mkdir -p frontend/src/components/sites/builder
mkdir -p frontend/src/utils/siteRenderer
# Copy builder pages
cp sites/src/builder/pages/wizard/WizardPage.tsx frontend/src/pages/Sites/Builder/Wizard.tsx
cp sites/src/builder/pages/preview/PreviewCanvas.tsx frontend/src/pages/Sites/Builder/Preview.tsx
cp sites/src/builder/pages/dashboard/SiteDashboard.tsx frontend/src/pages/Sites/Builder/Dashboard.tsx
# Copy renderer
cp sites/src/pages/SiteRenderer.tsx frontend/src/pages/Sites/PublicSiteRenderer.tsx
cp sites/src/loaders/loadSiteDefinition.ts frontend/src/services/siteRenderer.api.ts
# Copy utilities
cp -r sites/src/utils/* frontend/src/utils/siteRenderer/
3. Rebuild & Restart
# Rebuild frontend
cd /data/app/igny8/frontend
docker build -t igny8-frontend-dev:latest -f Dockerfile.dev .
# Stop sites container
docker stop igny8_sites
docker rm igny8_sites
# Start updated frontend
cd /data/app/igny8
docker compose -f docker-compose.app.yml up -d igny8_frontend
4. Test
# Test site builder (requires auth)
curl -I http://localhost:8021/sites/builder
# Test public renderer
curl -I http://localhost:8021/sites/view/test-site
# Check logs
docker logs -f igny8_frontend
5. Cleanup (After Verification)
cd /data/app/igny8
rm -rf sites/
rm -rf site-builder/
rm -rf frontend/src/modules/siteBuilder/
docker rmi igny8-sites-dev:latest
Impact on Other Features
✅ No Impact (These Still Work)
| Feature | Why No Impact |
|---|---|
| Planner module | Uses only backend API |
| Writer module | Uses only backend API |
| Linker module | Uses only backend API |
| Optimizer module | Uses only backend API |
| WordPress Publishing | Talks to backend, not affected |
| Authentication | Frontend change only |
| Billing/Credits | Backend only |
| AI Content Generation | Backend/Celery only |
⚠️ Needs Update (After Migration)
| Feature | What to Update | Impact |
|---|---|---|
| Site Builder UI | Routes change to /sites/builder/* |
Low - Internal only |
| Public Site Links | URLs change to /sites/view/{slug} |
Medium - External links |
| Navigation Menu | Add site builder menu items | Low - UI only |
| Tests | Update route tests if any | Low - Dev only |
Docker Compose Changes
Before (3 Services)
services:
igny8_frontend: # Port 8021
igny8_sites: # Port 8024 ❌ REMOVE THIS
igny8_backend: # Port 8011
igny8_celery_worker:
igny8_celery_beat:
After (2 Services)
services:
igny8_frontend: # Port 8021 (updated)
# igny8_sites removed
igny8_backend: # Port 8011
igny8_celery_worker:
igny8_celery_beat:
Frontend Service Update
igny8_frontend:
image: igny8-frontend-dev:latest
container_name: igny8_frontend
ports:
- "0.0.0.0:8021:5173"
environment:
VITE_BACKEND_URL: "https://api.igny8.com/api"
SITES_DATA_PATH: "/sites" # ← ADD THIS
volumes:
- /data/app/igny8/frontend:/app:rw
- /data/app/sites-data:/sites:ro # ← ADD THIS
Testing Checklist
Before Migration:
- Site builder wizard works at
http://localhost:8024/builder - Site preview works at
http://localhost:8024/builder/preview - Public site loads at
http://localhost:8024/{siteSlug}
After Migration:
- Site builder wizard works at
http://localhost:8021/sites/builder - Site preview works at
http://localhost:8021/sites/builder/preview - Blueprint dashboard works at
http://localhost:8021/sites/builder/dashboard - Public site loads at
http://localhost:8021/sites/view/{siteSlug} - Auth required for builder routes
- No auth required for public renderer
- API calls succeed from frontend
- No console errors in browser
- Sites data loads from
/data/app/sites-data/
Rollback (If Needed)
# Quick rollback
cp docker-compose.app.yml.backup docker-compose.app.yml
docker compose -f docker-compose.app.yml up -d igny8_sites
# Full rollback
cd /data/app/igny8
tar -xzf backup-sites-YYYYMMDD-HHMMSS.tar.gz
cd sites
docker build -t igny8-sites-dev:latest -f Dockerfile.dev .
docker compose -f docker-compose.app.yml up -d igny8_sites
Estimation
| Task | Time |
|---|---|
| Backup & Prep | 30 min |
| Copy Files & Update Routes | 2 hours |
| Docker Config Updates | 30 min |
| Rebuild & Deploy | 30 min |
| Testing | 1-2 hours |
| Cleanup & Docs | 1 hour |
| Total | 5-6 hours |
Decision Matrix
Keep Separate Sites Container If:
- ❌ You need different deployment schedules for sites vs main app
- ❌ You want sites on different infrastructure
- ❌ You have high traffic public sites (performance isolation)
- ❌ You want to scale sites independently
Merge Into Frontend If:
- ✅ You want simpler deployment (fewer containers)
- ✅ You want unified routing and authentication
- ✅ Sites are internal/low traffic
- ✅ You want easier development (single app)
- ✅ You want to reduce port complexity
Support
Full Documentation: SITES_REMOVAL_GUIDE.md
Architecture Reference: MASTER_REFERENCE.md
API Reference: API-COMPLETE-REFERENCE.md
Last Updated: November 29, 2025
Status: Ready for implementation