330 lines
9.8 KiB
Markdown
330 lines
9.8 KiB
Markdown
# Sites Container Removal - Quick Reference
|
|
|
|
**Version:** 1.0
|
|
**Date:** November 29, 2025
|
|
|
|
> **Full Guide:** See [SITES_REMOVAL_GUIDE.md](./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_sites` Docker 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)
|
|
|
|
1. **`/frontend/src/App.tsx`**
|
|
- Add site builder routes
|
|
- Add public renderer routes
|
|
- Add lazy imports
|
|
|
|
2. **`/docker-compose.app.yml`**
|
|
- Remove `igny8_sites` service
|
|
- Add `/sites-data` volume mount to `igny8_frontend`
|
|
- Add `SITES_DATA_PATH` env var to `igny8_frontend`
|
|
|
|
3. **`/frontend/vite.config.ts`**
|
|
- Add `SITES_DATA_PATH` environment variable
|
|
|
|
### Optional Files (Verify/Update)
|
|
|
|
4. **`/backend/igny8_core/settings.py`**
|
|
- Verify CORS settings (remove port 8024)
|
|
|
|
5. **`/frontend/src/components/sidebar/AppSidebar.tsx`**
|
|
- Add site builder menu items
|
|
|
|
---
|
|
|
|
## Critical Commands
|
|
|
|
### 1. Backup First
|
|
```bash
|
|
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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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)
|
|
```bash
|
|
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)
|
|
```yaml
|
|
services:
|
|
igny8_frontend: # Port 8021
|
|
igny8_sites: # Port 8024 ❌ REMOVE THIS
|
|
igny8_backend: # Port 8011
|
|
igny8_celery_worker:
|
|
igny8_celery_beat:
|
|
```
|
|
|
|
### After (2 Services)
|
|
```yaml
|
|
services:
|
|
igny8_frontend: # Port 8021 (updated)
|
|
# igny8_sites removed
|
|
igny8_backend: # Port 8011
|
|
igny8_celery_worker:
|
|
igny8_celery_beat:
|
|
```
|
|
|
|
### Frontend Service Update
|
|
```yaml
|
|
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)
|
|
|
|
```bash
|
|
# 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](./SITES_REMOVAL_GUIDE.md)
|
|
**Architecture Reference:** [MASTER_REFERENCE.md](./MASTER_REFERENCE.md)
|
|
**API Reference:** [API-COMPLETE-REFERENCE.md](./API-COMPLETE-REFERENCE.md)
|
|
|
|
---
|
|
|
|
**Last Updated:** November 29, 2025
|
|
**Status:** Ready for implementation
|