4.2 KiB
4.2 KiB
Site Builder URLs and File Management
Summary of Implementation
✅ Generate Page Content Step
Location: frontend/src/pages/Sites/Builder/Preview.tsx
Implementation:
- Added "Generate All Pages" button (shown when blueprint status is
'ready') - Button triggers
generateAllPages()frombuilderStore - Shows ProgressModal during generation
- Uses existing
PageGenerationService.bulk_generate_pages()backend function
Queue Function: ✅ EXISTS
PageGenerationService.bulk_generate_pages()creates Writer Tasks- Tasks are queued via
ContentGenerationService.generate_content() - Each page blueprint gets a Writer Task with title:
"[Site Builder] {page_title}" - Tasks are processed by Celery workers
URL Standards
Public Site URLs (Deployed Sites)
Current Implementation (Placeholder):
- Pattern:
https://{site_id}.igny8.com - Generated by:
SitesRendererAdapter._get_deployment_url() - Location:
backend/igny8_core/business/publishing/services/adapters/sites_renderer_adapter.py:191
Planned Implementation (from docs):
- Custom domains:
clientdomain.com→ routed via Caddy - Subdomain:
mysite.igny8.com→ routed via Caddy - Marketing site:
igny8.com→/igny8-sites/marketing/
Sites Renderer Routes:
- Public routes:
/:siteId/*(no auth required) - Loads from:
/data/app/sites-data/clients/{site_id}/v{version}/
Admin/Management URLs (Frontend App)
Site Management Routes (from frontend/src/App.tsx):
/sites- All sites list/sites/:id- Site dashboard/sites/:id/content- Site content list/sites/:id/editor- Site content editor/sites/:id/pages- Page manager/sites/:id/pages/new- Create new page/sites/:id/pages/:pageId/edit- Edit page/sites/:id/posts/:postId- View/edit post/sites/:id/posts/:postId/edit- Edit post/sites/:id/preview- Site preview/sites/:id/settings- Site settings (General, SEO, OG, Schema, Integrations)/sites/manage- Site management dashboard
Site Builder Routes:
/sites/builder- Site Builder wizard/sites/builder/preview- Preview blueprint (with Generate All Pages button)/sites/blueprints- Blueprints list
File Management
File Storage Structure
Site Files:
/data/app/sites-data/
└── clients/
└── {site_id}/
└── v{version}/
├── site.json
├── pages/
│ ├── home.json
│ ├── about.json
│ └── ...
└── assets/ # User-managed files
├── images/
├── documents/
└── media/
Service: SiteBuilderFileService
- Location:
backend/igny8_core/business/site_building/services/file_management_service.py - Base path:
/data/app/sites-data/clients - Max file size: 10MB per file
- Max storage per site: 100MB
User Access Rules
- Owner/Admin: Full access to all account sites
- Editor: Access to granted sites (via SiteUserAccess)
- Viewer: Read-only access to granted sites
- File operations scoped to user's accessible sites only
File Manager UI
Status: ⚠️ NOT YET IMPLEMENTED
Planned (from Phase 3 docs):
- File Browser UI:
site-builder/src/components/files/FileBrowser.tsx - File Upload API:
modules/site_builder/views.py - Storage quota check:
infrastructure/storage/file_storage.py
Expected Routes (not yet in App.tsx):
/sites/:id/files- File manager for site assets/sites/:id/files/upload- Upload files/sites/:id/files/:fileId- View/edit file
Docker Volumes
From docker-compose.app.yml:
igny8_sites:
volumes:
- /data/app/igny8/sites:/app
- /data/app/sites-data:/sites # Site definitions and assets
Environment Variable:
SITES_DATA_PATH=/sites(inside container)- Maps to
/data/app/sites-dataon host
Next Steps
- ✅ Generate All Pages button - Added to Preview page
- ⏳ File Manager UI - Needs to be implemented
- ⏳ Deployment URL generation - Currently placeholder, needs real domain mapping
- ⏳ Caddy routing configuration - For custom domains
- ⏳ File upload API endpoints - For user file management