Files
igny8/sites/MIGRATION_SUMMARY.md
IGNY8 VPS (Salman) 3ea519483d Refactor Site Builder Integration and Update Docker Configuration
- Merged the site builder functionality into the main app, enhancing the SiteBuilderWizard component with new steps and improved UI.
- Updated the Docker Compose configuration by removing the separate site builder service and integrating its functionality into the igny8_sites service.
- Enhanced Vite configuration to support code-splitting for builder routes, optimizing loading times.
- Updated package dependencies to include new libraries for state management and form handling.
2025-11-18 10:35:30 +00:00

117 lines
4.0 KiB
Markdown

# Site Builder → Sites Container Migration Summary
## Overview
Successfully merged Site Builder container into Sites container. Sites is now the primary container hosting both:
- **Public Site Renderer** (no auth required)
- **Site Builder** (auth required)
## Structure Changes
### New Directory Structure
```
sites/src/
├── builder/ # Site Builder (from site-builder/src/)
│ ├── pages/ # Wizard, Preview, Dashboard
│ ├── components/ # Builder-specific components
│ ├── state/ # Zustand stores
│ ├── api/ # API client with conditional auth
│ ├── types/ # TypeScript types
│ └── App.css # Builder styles
├── renderer/ # Sites Renderer (existing)
│ ├── pages/ # SiteRenderer component
│ ├── loaders/ # Site definition loaders
│ ├── utils/ # Layout renderer utilities
│ └── types/ # Renderer types
├── shared/ # Shared components
│ └── ProtectedRoute.tsx
├── App.tsx # Unified router
└── main.tsx # Entry point
```
## Routing Structure
### Public Routes (No Auth)
- `/:siteId/*` - Site renderer (public sites)
- `/` - Root page
### Builder Routes (Auth Required)
- `/builder` - Wizard page
- `/builder/preview` - Preview canvas
- `/builder/dashboard` - Blueprint history
## Key Changes
### 1. Unified Router (`App.tsx`)
- Single router handles both builder and renderer routes
- Builder routes wrapped in `ProtectedRoute` component
- Builder routes wrapped in `BuilderLayout` component
- Code-splitting for builder routes (lazy loading)
### 2. Authentication
- `ProtectedRoute` component checks for JWT token in localStorage
- Builder API client conditionally includes auth headers
- Public renderer routes have no authentication
### 3. API Clients
- Builder API (`builder/api/builder.api.ts`): Includes auth token if available
- Renderer API (`renderer/loaders/loadSiteDefinition.ts`): No auth required
### 4. Build Configuration
- Updated `vite.config.ts` with code-splitting
- Builder routes split into separate chunk
- Supports both `sites.igny8.com` and `builder.igny8.com` domains
### 5. Docker Configuration
- Removed `igny8_site_builder` service from docker-compose
- Updated `igny8_sites` service comment
- Single container now handles both functions
## Backend (No Changes)
- Backend Django views remain unchanged
- API endpoints: `/api/v1/site-builder/` (same as before)
- Database tables: No changes
- Authentication: Same JWT-based auth
## Migration Checklist
✅ Created merged directory structure
✅ Moved site-builder files to sites/src/builder/
✅ Created unified App.tsx with routing
✅ Created ProtectedRoute component
✅ Created BuilderLayout component
✅ Merged package.json dependencies
✅ Updated vite.config.ts with code-splitting
✅ Updated main.tsx entry point
✅ Updated docker-compose.app.yml (removed site_builder service)
✅ Updated API clients with conditional authentication
✅ Updated index.css with builder styles
## Next Steps
1. **Test Builder Functionality**
- Navigate to `/builder` (should require auth)
- Test wizard flow
- Test preview
- Test dashboard
2. **Test Renderer Functionality**
- Navigate to `/:siteId/*` (should work without auth)
- Test site loading from filesystem
- Test site loading from API
3. **Build & Deploy**
- Build Docker image: `docker build -t igny8-sites-dev:latest -f Dockerfile.dev .`
- Update docker-compose: `docker compose -f docker-compose.app.yml up -d igny8_sites`
4. **Cleanup** (Optional)
- Remove `/site-builder` directory after verification
- Update documentation
## Notes
- **No Backward Compatibility**: Old site-builder container is removed
- **Backend Unchanged**: All Django views and models remain the same
- **Code-Splitting**: Builder code is lazy-loaded, so public sites don't load builder code
- **Route Conflicts**: Builder routes are namespaced under `/builder/*` to avoid conflicts