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

4.0 KiB

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