Files
igny8/part2-dev/PHASE-5-7-9-SITES-RENDERER-INTEGRATION-UI.md
alorig 8040d983de asd
2025-11-18 03:32:36 +05:00

1145 lines
41 KiB
Markdown

# PHASES 5-7 & 9: SITES RENDERER, INTEGRATION & UI
**Consolidated Implementation Plan**
**Goal**: Build Sites renderer, multi-destination publishing, comprehensive UI system, and Site Builder enhancements.
**Timeline**: 8.5-11 weeks
**Priority**: MEDIUM
**Dependencies**: Phase 0, Phase 1, Phase 3
---
## TABLE OF CONTENTS
1. [Executive Summary](#executive-summary)
2. [Phase 5: Sites Renderer & Bulk Generation](#phase-5-sites-renderer--bulk-generation)
3. [Phase 6: Site Integration & Multi-Destination Publishing](#phase-6-site-integration--multi-destination-publishing)
4. [Phase 7: UI Components & Prompt Management](#phase-7-ui-components--prompt-management)
5. [Cross-Phase Integration](#cross-phase-integration)
6. [Testing & Validation](#testing--validation)
7. [Implementation Checklist](#implementation-checklist)
8. [Success Criteria](#success-criteria)
---
## EXECUTIVE SUMMARY
This document consolidates Phases 5, 6, 7, and 9 into a unified implementation plan:
- **Phase 5**: Sites Renderer for hosting public sites + Bulk page generation from Site Builder
- **Phase 6**: Multi-destination publishing (WordPress, Sites, Shopify) + Site integrations + Enhanced task queuing
- **Phase 7**: Complete UI component library + Prompt management UI + Advanced site management + CMS styling
**Key Exclusions** (Already Implemented):
- ✅ Module Settings UI (implemented in Phase 0)
- ✅ Module Guard component (implemented in Phase 0)
- ✅ Conditional route loading (implemented in Phase 0)
- ✅ Sidebar module filtering (implemented in Phase 0)
- ✅ GenerateSiteStructureFunction (implemented in Phase 3)
- ✅ Single page generation (implemented in Phase 3)
- ✅ File management service (implemented in Phase 3)
---
## PHASE 5: SITES RENDERER & BULK GENERATION
**Timeline**: 2.5-3.5 weeks
**Dependencies**: Phase 3
### 5.1 Overview
**Objectives**:
- Create Sites renderer container for hosting public sites
- Build publisher service and deployment infrastructure
- Support multiple layout options (7 layout types)
- Enable bulk page content generation from Site Builder
- Deploy sites to public URLs
- Render sites from site definitions
**Key Principles**:
- **Component Reuse**: Use shared component library from Phase 3
- **Multiple Layouts**: Support 7 layout types
- **Public Access**: Sites accessible via public URLs
- **User-Friendly**: "My Websites" or "Published Sites" in UI
- **Bulk Operations**: Generate all pages at once before publishing
### 5.2 Sites Renderer Container
**User-Friendly Name**: "My Websites" or "Published Sites"
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Create Sites Container** | `docker-compose.app.yml` | None | Add new container for sites renderer |
| **Sites Renderer Frontend** | `sites/src/` | NEW | React app for rendering sites |
| **Site Definition Loader** | `sites/src/loaders/loadSiteDefinition.ts` | NEW | Load site definitions from API |
| **Layout Renderer** | `sites/src/utils/layoutRenderer.ts` | NEW | Render different layouts |
| **Template System** | `sites/src/utils/templateEngine.ts` | NEW | Template rendering system |
| **File Access Integration** | `sites/src/utils/fileAccess.ts` | Phase 3 | Integrate Phase 3's SiteBuilderFileService |
| **Component Import** | `sites/src/components/` | Phase 3 | Import shared components from `frontend/src/components/shared/` |
**Docker Compose Configuration**:
```yaml
# docker-compose.app.yml
igny8_sites:
build: ./sites
ports:
- "8024:5176"
volumes:
- /data/app/igny8/sites:/app
- /data/app/sites-data:/sites
environment:
- VITE_API_URL=http://igny8_backend:8010
```
**File Access Integration**:
- Sites Renderer must access site assets from `/data/app/sites-data/clients/{site_id}/v{version}/assets/`
- Use Phase 3's `SiteBuilderFileService` for file access patterns
- Ensure Sites Renderer can load images, documents, and media files
### 5.3 Publisher Service
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **PublisherService** | `business/publishing/services/publisher_service.py` | Phase 1 | Main publishing service |
| **SitesRendererAdapter** | `business/publishing/services/adapters/sites_renderer_adapter.py` | Phase 3 | Adapter for Sites renderer |
| **DeploymentService** | `business/publishing/services/deployment_service.py` | Phase 3 | Deploy sites to renderer |
**PublisherService Structure**:
```python
# business/publishing/services/publisher_service.py
class PublisherService:
def publish_to_sites(self, site_blueprint):
"""Publish site to Sites renderer"""
adapter = SitesRendererAdapter()
return adapter.deploy(site_blueprint)
def get_deployment_status(self, site_blueprint):
"""Get deployment status for a site"""
return DeploymentService().get_status(site_blueprint)
```
**SitesRendererAdapter**:
- Write site definition to filesystem (`/data/app/sites-data/`)
- Update deployment records
- Handle versioning
- Support rollback
**DeploymentService**:
- Manage deployment lifecycle
- Track deployment versions
- Handle deployment errors
- Support rollback capability
### 5.4 Publishing Models
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **PublishingRecord Model** | `business/publishing/models.py` | Phase 1 | Track content publishing |
| **DeploymentRecord Model** | `business/publishing/models.py` | Phase 3 | Track site deployments |
**PublishingRecord Model**:
```python
class PublishingRecord(SiteSectorBaseModel):
content = models.ForeignKey(Content, on_delete=models.CASCADE, null=True)
site_blueprint = models.ForeignKey(SiteBlueprint, on_delete=models.CASCADE, null=True)
destination = models.CharField(max_length=50) # 'wordpress', 'sites', 'shopify'
destination_id = models.CharField(max_length=255) # External ID
status = models.CharField(max_length=20) # 'pending', 'published', 'failed'
published_at = models.DateTimeField(null=True, blank=True)
metadata = models.JSONField(default=dict)
```
**DeploymentRecord Model**:
```python
class DeploymentRecord(SiteSectorBaseModel):
site_blueprint = models.ForeignKey(SiteBlueprint, on_delete=models.CASCADE)
version = models.IntegerField()
deployed_version = models.IntegerField()
status = models.CharField(max_length=20) # 'deploying', 'deployed', 'failed'
deployed_at = models.DateTimeField(null=True, blank=True)
deployment_url = models.URLField(blank=True, null=True)
metadata = models.JSONField(default=dict)
```
### 5.5 Publisher API
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Publisher ViewSet** | `modules/publisher/views.py` | PublisherService | API for publishing operations |
**Publisher API Endpoints**:
- `POST /api/v1/publisher/publish/` - Publish content or site
- `GET /api/v1/publisher/status/{id}/` - Get publishing status
- `POST /api/v1/publisher/deploy/{blueprint_id}/` - Deploy site to renderer
- `GET /api/v1/publisher/deployments/` - List deployments
### 5.6 Multiple Layout Options
**Layout Types** (7 total):
- Default (Standard)
- Minimal (Clean, simple)
- Magazine (Editorial, content-focused)
- Ecommerce (Product-focused)
- Portfolio (Showcase)
- Blog (Content-first)
- Corporate (Business)
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Layout Configuration** | `business/site_building/models.py` | Phase 3 | Store layout selection in SiteBlueprint |
| **Layout Renderer** | `sites/src/utils/layoutRenderer.ts` | Phase 5 | Render different layouts |
| **Layout Components** | `sites/src/components/layouts/` | Phase 3 | Import from shared library |
**Layout Storage**:
- Store `layout_type` in `SiteBlueprint.config_json` or as separate field
- Sites Renderer reads layout type and renders appropriate layout component
- Layout components from Phase 3 shared library
### 5.7 Bulk Page Generation (From Phase 9)
**Purpose**: Enable bulk generation of all pages from a Site Builder blueprint before publishing.
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Bulk Generate Service** | `business/site_building/services/page_generation_service.py` | Phase 3 | Add `bulk_generate_pages()` method |
| **Task Creation Service** | `business/site_building/services/page_generation_service.py` | Phase 3 | Add `create_tasks_for_pages()` method |
| **Bulk Generate API** | `modules/site_builder/views.py` | PageGenerationService | Add `generate_all_pages` action |
| **Bulk Generate UI** | `site-builder/src/pages/dashboard/SiteDashboard.tsx` | API client | Add "Generate All Pages" button |
| **Page Selection UI** | `site-builder/src/pages/preview/PreviewCanvas.tsx` | State store | Add checkbox selection for pages |
| **Progress Tracking** | `site-builder/src/components/common/ProgressModal.tsx` | Existing | Track bulk generation progress |
**Bulk Generation Service**:
```python
# business/site_building/services/page_generation_service.py
class PageGenerationService:
def bulk_generate_pages(
self,
site_blueprint: SiteBlueprint,
page_ids: Optional[List[int]] = None,
force_regenerate: bool = False
) -> dict:
"""
Generate content for multiple pages in a blueprint.
Similar to how ideas are queued to writer:
1. Get pages (filtered by page_ids if provided)
2. Create/update Writer Tasks for each page
3. Queue content generation for all tasks
4. Return task IDs for progress tracking
"""
pages = site_blueprint.pages.all()
if page_ids:
pages = pages.filter(id__in=page_ids)
task_ids = []
for page in pages:
task = self._ensure_task(page, force_regenerate=force_regenerate)
task_ids.append(task.id)
page.status = 'generating'
page.save(update_fields=['status', 'updated_at'])
account = site_blueprint.account
result = self.content_service.generate_content(task_ids, account)
return {
'success': True,
'pages_queued': len(task_ids),
'task_ids': task_ids,
'celery_task_id': result.get('task_id'),
}
def create_tasks_for_pages(
self,
site_blueprint: SiteBlueprint,
page_ids: Optional[List[int]] = None,
force_regenerate: bool = False
) -> List[Tasks]:
"""
Create Writer Tasks for blueprint pages without generating content.
Useful for:
- Previewing what tasks will be created
- Manual task management
- Integration with existing Writer UI
"""
pages = site_blueprint.pages.all()
if page_ids:
pages = pages.filter(id__in=page_ids)
tasks = []
for page in pages:
task = self._ensure_task(page, force_regenerate=force_regenerate)
tasks.append(task)
return tasks
```
**Bulk Generation API**:
```python
# modules/site_builder/views.py
class SiteBlueprintViewSet(SiteSectorModelViewSet):
@action(detail=True, methods=['post'])
def generate_all_pages(self, request, pk=None):
"""
Generate content for all pages in blueprint.
Request body:
{
"page_ids": [1, 2, 3], # Optional: specific pages, or all if omitted
"force": false # Optional: force regenerate existing content
}
"""
blueprint = self.get_object()
page_ids = request.data.get('page_ids')
force = request.data.get('force', False)
service = PageGenerationService()
result = service.bulk_generate_pages(
blueprint,
page_ids=page_ids,
force_regenerate=force
)
return success_response(result, request=request)
@action(detail=True, methods=['post'])
def create_tasks(self, request, pk=None):
"""Create Writer tasks for pages without generating content"""
blueprint = self.get_object()
page_ids = request.data.get('page_ids')
service = PageGenerationService()
tasks = service.create_tasks_for_pages(blueprint, page_ids=page_ids)
serializer = TasksSerializer(tasks, many=True)
return success_response({'tasks': serializer.data}, request=request)
```
**Frontend API Client**:
```typescript
// site-builder/src/api/builder.api.ts
export const builderApi = {
async generateAllPages(
blueprintId: number,
options?: { pageIds?: number[]; force?: boolean }
): Promise<{ task_id: string; pages_queued: number }> {
const res = await client.post(
`/blueprints/${blueprintId}/generate_all_pages/`,
options || {}
);
return res.data;
},
async createTasksForPages(
blueprintId: number,
pageIds?: number[]
): Promise<{ tasks: Task[] }> {
const res = await client.post(
`/blueprints/${blueprintId}/create_tasks/`,
{ page_ids: pageIds }
);
return res.data;
},
};
```
### 5.8 Phase 5 Testing
**Test Cases**:
- ✅ Sites renderer loads site definitions
- ✅ Blocks render correctly using shared components
- ✅ File access works (images, documents, media)
- ✅ Deployment works end-to-end
- ✅ Sites are accessible publicly
- ✅ Multiple layouts work correctly
- ✅ Bulk page generation works
- ✅ Progress tracking works
- ✅ Task creation works correctly
---
## PHASE 6: SITE INTEGRATION & MULTI-DESTINATION PUBLISHING
**Timeline**: 2.5-3 weeks
**Dependencies**: Phase 5
### 6.1 Overview
**Objectives**:
- Support multiple site integrations per site
- Multi-destination publishing (WordPress, Sites, Shopify)
- Two-way sync with external platforms
- Site management UI (Core CMS features)
- Publishing settings UI
- Enhanced blueprint-to-writer task integration
**Key Principles**:
- **Multiple Integrations**: One site can have multiple integrations
- **Adapter Pattern**: Platform-specific adapters for publishing
- **Two-Way Sync**: Sync content both ways
- **User-Friendly**: "Site Manager" or "Content Manager" in UI
### 6.2 Site Integration Models
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **SiteIntegration Model** | `business/integration/models.py` | Phase 1 | Store integration configs |
**SiteIntegration Model**:
```python
# business/integration/models.py
class SiteIntegration(SiteSectorBaseModel):
site = models.ForeignKey(Site, on_delete=models.CASCADE)
platform = models.CharField(max_length=50) # 'wordpress', 'shopify', 'custom'
platform_type = models.CharField(max_length=50) # 'cms', 'ecommerce', 'custom_api'
config_json = models.JSONField(default=dict)
credentials = models.EncryptedField() # Encrypted API keys
is_active = models.BooleanField(default=True)
sync_enabled = models.BooleanField(default=False)
last_sync_at = models.DateTimeField(null=True, blank=True)
sync_status = models.CharField(max_length=20) # 'success', 'failed', 'pending'
class Meta:
db_table = 'igny8_site_integrations'
unique_together = [['site', 'platform']]
```
### 6.3 Integration Service
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **IntegrationService** | `business/integration/services/integration_service.py` | Phase 1 | Manage integrations |
| **SyncService** | `business/integration/services/sync_service.py` | Phase 1 | Handle two-way sync |
| **ContentSyncService** | `business/integration/services/content_sync_service.py` | Phase 1 | Sync content from external platforms |
**IntegrationService**:
- CRUD operations for SiteIntegration
- Integration validation
- Credential management (encrypted)
- Connection testing
**SyncService**:
- Two-way sync logic
- Sync status tracking
- Error handling
- Sync logging
**ContentSyncService**:
- Sync content from WordPress
- Sync content from Shopify
- Sync content from custom APIs
- Import content with source tracking
### 6.4 Publishing Adapters
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **BaseAdapter** | `business/publishing/services/adapters/base_adapter.py` | Phase 5 | Base adapter interface |
| **WordPressAdapter** | `business/publishing/services/adapters/wordpress_adapter.py` | EXISTING (refactor) | WordPress publishing |
| **SitesRendererAdapter** | `business/publishing/services/adapters/sites_renderer_adapter.py` | Phase 5 | IGNY8 Sites deployment |
| **ShopifyAdapter** | `business/publishing/services/adapters/shopify_adapter.py` | Phase 5 (future) | Shopify publishing |
**BaseAdapter Interface**:
```python
# business/publishing/services/adapters/base_adapter.py
class BaseAdapter(ABC):
@abstractmethod
def publish(self, content, destination_config):
"""Publish content to destination"""
pass
@abstractmethod
def test_connection(self, config):
"""Test connection to destination"""
pass
@abstractmethod
def get_status(self, published_id):
"""Get publishing status"""
pass
```
**WordPressAdapter Refactor**:
- Refactor existing WordPress publishing to use BaseAdapter
- Preserve all existing functionality
- Add adapter interface compliance
- Test backward compatibility
### 6.5 Multi-Destination Publishing
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Extend PublisherService** | `business/publishing/services/publisher_service.py` | Phase 5 | Support multiple destinations |
| **Update PublishingRecord** | `business/publishing/models.py` | Phase 5 | Track multiple destinations |
**Multi-Destination Publishing**:
```python
# business/publishing/services/publisher_service.py
class PublisherService:
def publish(self, content, destinations):
"""
Publish content to multiple destinations.
Args:
content: Content or SiteBlueprint to publish
destinations: List of destination configs
Returns:
List of publishing results
"""
results = []
for destination in destinations:
adapter = self.get_adapter(destination['platform'])
result = adapter.publish(content, destination)
results.append(result)
return results
def get_adapter(self, platform):
"""Get adapter for platform"""
adapters = {
'wordpress': WordPressAdapter(),
'sites': SitesRendererAdapter(),
'shopify': ShopifyAdapter(),
}
return adapters.get(platform)
```
**PublishingRecord Updates**:
- Support multiple destinations per content
- Track status per destination
- Store destination-specific metadata
### 6.6 Site Model Extensions
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Add site_type field** | `core/auth/models.py` | None | Track site type |
| **Add hosting_type field** | `core/auth/models.py` | None | Track hosting type |
| **Add integrations relationship** | `core/auth/models.py` | Phase 6.2 | Link to SiteIntegration |
**Site Model Extensions**:
```python
# core/auth/models.py
class Site(SiteSectorBaseModel):
# Existing fields...
# NEW fields
site_type = models.CharField(
max_length=50,
choices=[
('marketing', 'Marketing Site'),
('ecommerce', 'Ecommerce Site'),
('blog', 'Blog'),
('portfolio', 'Portfolio'),
('corporate', 'Corporate'),
],
default='marketing'
)
hosting_type = models.CharField(
max_length=50,
choices=[
('igny8_sites', 'IGNY8 Sites'),
('wordpress', 'WordPress'),
('shopify', 'Shopify'),
('multi', 'Multi-Destination'),
],
default='igny8_sites'
)
```
### 6.7 Integration API
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Integration ViewSet** | `modules/integration/views.py` | IntegrationService | CRUD for integrations |
| **Integration URLs** | `modules/integration/urls.py` | None | Register integration routes |
**Integration API Endpoints**:
- `GET /api/v1/integration/integrations/` - List integrations
- `POST /api/v1/integration/integrations/` - Create integration
- `GET /api/v1/integration/integrations/{id}/` - Get integration
- `PUT /api/v1/integration/integrations/{id}/` - Update integration
- `DELETE /api/v1/integration/integrations/{id}/` - Delete integration
- `POST /api/v1/integration/integrations/{id}/test/` - Test connection
- `POST /api/v1/integration/integrations/{id}/sync/` - Trigger sync
### 6.8 Integration UI (Update Existing)
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Update Integration Settings** | `frontend/src/pages/Settings/Integration.tsx` | EXISTING (update) | Add SiteIntegration support |
| **Multi-Platform Support** | `frontend/src/components/integration/PlatformSelector.tsx` | NEW | Platform selector |
| **Integration Status** | `frontend/src/components/integration/IntegrationStatus.tsx` | NEW | Show integration status |
**Integration UI Features**:
- Show multiple integrations per site
- Add WordPress, Shopify, Custom API options
- Two-way sync toggle
- Connection testing
- Sync status display
- Last sync timestamp
### 6.9 Publishing Settings UI
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Publishing Settings Page** | `frontend/src/pages/Settings/Publishing.tsx` | NEW | Publishing configuration |
| **Destination Management** | `frontend/src/pages/Settings/Publishing.tsx` | Phase 6 | Manage publishing destinations |
| **Publishing Rules** | `frontend/src/components/publishing/PublishingRules.tsx` | NEW | Publishing rules configuration |
| **Auto-Publish Settings** | `frontend/src/components/publishing/AutoPublishSettings.tsx` | NEW | Auto-publish configuration |
**Publishing Settings Features**:
- Configure default publishing destinations
- Set up publishing rules (auto-publish, manual, scheduled)
- Manage destination priorities
- Configure auto-publish triggers
### 6.10 Site Management UI (Core CMS)
**User-Friendly Name**: "Site Manager" or "Content Manager"
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Site Management Dashboard** | `frontend/src/pages/Sites/Manage.tsx` | NEW | Site management overview |
| **Site Content Editor** | `frontend/src/pages/Sites/Editor.tsx` | NEW | Edit site content |
| **Post Editor** | `frontend/src/pages/Sites/PostEditor.tsx` | NEW | Edit posts |
| **Page Manager** | `frontend/src/pages/Sites/PageManager.tsx` | NEW | Manage pages |
| **Site Settings** | `frontend/src/pages/Sites/Settings.tsx` | NEW | Site settings |
**Site Management Features** (Core):
- View all pages/posts for a site
- Add new pages
- Remove pages
- Edit page content
- Manage page order
- Change page templates
- Update site settings
- Basic site preview
### 6.11 Enhanced Task Integration (From Phase 9)
**Purpose**: Better integration between Site Builder tasks and Writer UI.
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Show Site Builder Tasks** | `frontend/src/pages/Writer/Content.tsx` | Existing | Filter tasks with "[Site Builder]" prefix |
| **Link to Blueprint** | `frontend/src/pages/Writer/Content.tsx` | API | Add link to source blueprint |
| **Bulk Actions** | `frontend/src/pages/Writer/Content.tsx` | Existing | Include Site Builder tasks in bulk actions |
**Task Identification**:
- Tasks created from Site Builder have title prefix: `"[Site Builder] {page_title}"`
- Can filter Writer tasks by this prefix
- Can link back to source PageBlueprint via task description
**Writer UI Enhancements**:
- Filter by source (Site Builder, Ideas, Manual)
- Show source blueprint link
- Include in bulk operations
- Show page type and site name
### 6.12 Phase 6 Testing
**Test Cases**:
- ✅ Site integrations work correctly
- ✅ Multi-destination publishing works
- ✅ WordPress sync works (when plugin connected)
- ✅ Two-way sync functions properly
- ✅ Site management UI works (core features)
- ✅ Publishing settings work
- ✅ Task integration works
- ✅ Adapter pattern works correctly
---
## PHASE 7: UI COMPONENTS & PROMPT MANAGEMENT
**Timeline**: 3.5-4.5 weeks
**Dependencies**: Phase 0, Phase 3, Phase 5
### 7.1 Overview
**Objectives**:
- Complete global component library
- Add prompt management UI for Site Builder
- Build advanced site management UI
- Create layout and template system
- Implement CMS styling system
**Key Principles**:
- **No Duplication**: All components shared across apps
- **TypeScript**: All components use TypeScript
- **Accessibility**: All components accessible (ARIA)
- **Responsive**: All components responsive
### 7.2 Global Component Library
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Component Library Structure** | `frontend/src/components/shared/` | Phase 3 | Complete component library |
| **Block Components** | `frontend/src/components/shared/blocks/` | Phase 3 | All block components |
| **Layout Components** | `frontend/src/components/shared/layouts/` | Phase 3 | All layout components |
| **Template Components** | `frontend/src/components/shared/templates/` | Phase 3 | All template components |
| **Component Documentation** | `frontend/src/components/shared/README.md` | None | Document all components |
| **Component Storybook** | `frontend/.storybook/` | Optional | Component documentation |
| **Component Tests** | `frontend/src/components/shared/**/*.test.tsx` | None | Test all components |
**Component Standards**:
- All components use TypeScript
- All components have props interfaces
- All components are responsive
- All components support dark mode
- All components are accessible (ARIA)
- No duplicate components
**Block Components to Complete**:
- HeroBlock
- FeatureGridBlock
- StatsPanel
- ServicesBlock
- ProductsBlock
- TestimonialsBlock
- ContactFormBlock
- CTABlock
- ImageGalleryBlock
- VideoBlock
- TextBlock
- QuoteBlock
**Layout Components to Complete** (7 total):
- DefaultLayout
- MinimalLayout
- MagazineLayout
- EcommerceLayout
- PortfolioLayout
- BlogLayout
- CorporateLayout
**Template Components to Complete**:
- BlogTemplate
- BusinessTemplate
- PortfolioTemplate
- EcommerceTemplate
- LandingTemplate
- MarketingTemplate
### 7.3 Prompt Management UI (From Phase 9)
**Purpose**: Add Site Builder prompt to Thinker `/prompts` interface.
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Add prompt type to backend** | `modules/system/models.py` | Existing | Add `'site_structure_generation'` to PROMPT_TYPE_CHOICES |
| **Create migration** | `modules/system/migrations/XXXX_add_site_structure_prompt_type.py` | Existing | Add new choice to PROMPT_TYPE_CHOICES |
| **Add prompt type to frontend** | `frontend/src/pages/Thinker/Prompts.tsx` | Existing | Add site_structure_generation to PROMPT_TYPES array |
| **Add Site Builder section** | `frontend/src/pages/Thinker/Prompts.tsx` | Existing | Add "Site Builder" section to Prompts page |
| **Add prompt editor** | `frontend/src/pages/Thinker/Prompts.tsx` | Existing | Add prompt editor for site structure generation |
**Backend Model Update**:
```python
# modules/system/models.py
class AIPrompt(AccountBaseModel):
PROMPT_TYPE_CHOICES = [
('clustering', 'Clustering'),
('ideas', 'Ideas Generation'),
('content_generation', 'Content Generation'),
('image_prompt_extraction', 'Image Prompt Extraction'),
('image_prompt_template', 'Image Prompt Template'),
('negative_prompt', 'Negative Prompt'),
('site_structure_generation', 'Site Structure Generation'), # NEW
]
```
**Frontend Prompt Type Config**:
```typescript
// frontend/src/pages/Thinker/Prompts.tsx
const PROMPT_TYPES = [
// ... existing prompts
{
key: 'site_structure_generation',
label: 'Site Structure Generation',
description: 'Generate site structure from business brief. Use [IGNY8_BUSINESS_BRIEF], [IGNY8_OBJECTIVES], [IGNY8_STYLE], and [IGNY8_SITE_INFO] to inject data.',
icon: '🏗️',
color: 'teal',
},
];
```
**Prompt UI Section**:
```typescript
{/* Site Builder Prompts Section */}
<div className="mb-8">
<div className="mb-4">
<h2 className="text-xl font-semibold text-gray-800 dark:text-white">
Site Builder
</h2>
<p className="text-sm text-gray-600 dark:text-gray-400">
Configure prompts for AI-powered site structure generation
</p>
</div>
{/* Site Structure Generation Prompt */}
<PromptEditor
promptType="site_structure_generation"
label="Site Structure Generation Prompt"
description="Generate complete site structure (pages, blocks, navigation) from business brief"
variables={[
'[IGNY8_BUSINESS_BRIEF]',
'[IGNY8_OBJECTIVES]',
'[IGNY8_STYLE]',
'[IGNY8_SITE_INFO]'
]}
/>
</div>
```
### 7.4 Site Management UI (Advanced Features)
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Site List View** | `frontend/src/pages/Sites/List.tsx` | NEW | List all sites with filters |
| **Site Dashboard** | `frontend/src/pages/Sites/Dashboard.tsx` | NEW | Site overview with stats |
| **Site Content Manager** | `frontend/src/pages/Sites/Content.tsx` | NEW | Manage site content (posts/pages list) |
| **Post Editor** | `frontend/src/pages/Sites/PostEditor.tsx` | NEW | Full-featured post editor |
| **Page Manager** | `frontend/src/pages/Sites/Pages.tsx` | NEW | Advanced page management |
| **Site Settings** | `frontend/src/pages/Sites/Settings.tsx` | NEW | Advanced site settings + SEO |
| **Site Preview** | `frontend/src/pages/Sites/Preview.tsx` | NEW | Live site preview |
**Site Management Features** (Advanced):
- Site list with filters (type, status, integration)
- Site dashboard with statistics
- Content manager with search and filters
- Full-featured post/page editor
- Advanced page management (drag-drop reorder, bulk actions)
- SEO settings (meta tags, Open Graph, schema)
- Live site preview with iframe
- Site analytics integration
### 7.5 Layout & Template System
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Layout Selector** | `frontend/src/components/sites/LayoutSelector.tsx` | NEW | Select layout |
| **Template Library** | `frontend/src/components/sites/TemplateLibrary.tsx` | NEW | Template library |
| **Layout Preview** | `frontend/src/components/sites/LayoutPreview.tsx` | NEW | Preview layouts |
| **Template Customizer** | `frontend/src/components/sites/TemplateCustomizer.tsx` | NEW | Customize templates |
| **Style Editor** | `frontend/src/components/sites/StyleEditor.tsx` | NEW | Edit styles |
**Layout Options** (7 total):
- Default Layout
- Minimal Layout
- Magazine Layout
- Ecommerce Layout
- Portfolio Layout
- Blog Layout
- Corporate Layout
**Template System**:
- Pre-built templates
- Custom templates
- Template customization
- Style presets
- Color schemes
- Typography options
### 7.6 CMS Styling System
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **CMS Theme System** | `frontend/src/styles/cms/` | NEW | Theme system |
| **Style Presets** | `frontend/src/styles/cms/presets.ts` | NEW | Style presets |
| **Color Schemes** | `frontend/src/styles/cms/colors.ts` | NEW | Color schemes |
| **Typography System** | `frontend/src/styles/cms/typography.ts` | NEW | Typography system |
| **Component Styles** | `frontend/src/styles/cms/components.ts` | NEW | Component styles |
**CMS Features**:
- Theme customization
- Color palette management
- Typography settings
- Component styling
- Responsive breakpoints
- Dark/light mode
### 7.7 Module Enhancements (Optional)
**Note**: Module Settings UI is already implemented in Phase 0. These are optional enhancements.
| Task | File | Dependencies | Implementation |
|------|------|--------------|----------------|
| **Module Dependencies Check** | `frontend/src/components/settings/ModuleDependencies.tsx` | NEW | Show module dependencies |
| **Module Usage Statistics** | `frontend/src/components/settings/ModuleStats.tsx` | NEW | Show module usage stats |
| **Module Configuration UI** | `frontend/src/components/settings/ModuleConfig.tsx` | NEW | Per-module configuration |
**Module Enhancement Features** (Optional):
- Module dependencies check (warnings when disabling dependent modules)
- Module usage statistics (show usage per module)
- Module-specific configuration UI (per-module settings)
### 7.8 Phase 7 Testing
**Test Cases**:
- ✅ All components render correctly
- ✅ Component library is complete
- ✅ Prompt management UI works
- ✅ Site management works end-to-end (advanced features)
- ✅ Layout system works
- ✅ Template system works
- ✅ CMS styling system works
- ✅ No duplicate components
- ✅ All components are accessible
- ✅ All components are responsive
---
## CROSS-PHASE INTEGRATION
### Service Dependencies
**Phase 5 Uses**:
- Phase 3: Shared components, file management, SiteBlueprint/PageBlueprint models
- Phase 1: ContentGenerationService (for bulk generation)
- Phase 0: CreditService (for credit checks)
**Phase 6 Uses**:
- Phase 5: PublisherService, SitesRendererAdapter, DeploymentService
- Phase 3: SiteBlueprint models
- Phase 1: ContentGenerationService, ContentSyncService
- Phase 0: CreditService
**Phase 7 Uses**:
- Phase 3: Shared component library (completes it)
- Phase 5: Sites Renderer (for preview)
- Phase 6: Site Management (enhances it)
- Phase 0: Module Settings backend (adds UI enhancements)
### Workflow Integration
**Complete Site Workflow**:
1. User creates site blueprint via Site Builder (Phase 3)
2. User generates all pages via bulk generation (Phase 5)
3. Content generated via Writer (Phase 1)
4. Site deployed to Sites Renderer (Phase 5)
5. Site published to multiple destinations (Phase 6)
6. Site managed via Site Management UI (Phase 6 & 7)
7. Prompts managed via Thinker UI (Phase 7)
**Content Publishing Workflow**:
1. Content generated in Writer (Phase 1)
2. Content optimized via Optimizer (Phase 4)
3. Content published to multiple destinations (Phase 6)
4. Publishing tracked in PublishingRecord (Phase 5 & 6)
---
## TESTING & VALIDATION
### Phase 5 Testing
**Sites Renderer Tests**:
- ✅ Sites renderer loads site definitions
- ✅ Blocks render correctly using shared components
- ✅ File access works (images, documents, media)
- ✅ Deployment works end-to-end
- ✅ Sites are accessible publicly
- ✅ Multiple layouts work correctly
**Bulk Generation Tests**:
- ✅ Bulk page generation works
- ✅ Progress tracking works
- ✅ Task creation works correctly
- ✅ Selected pages can be generated
- ✅ Force regenerate works
### Phase 6 Testing
**Integration Tests**:
- ✅ Site integrations work correctly
- ✅ Multi-destination publishing works
- ✅ WordPress sync works (when plugin connected)
- ✅ Two-way sync functions properly
- ✅ Adapter pattern works correctly
**Site Management Tests**:
- ✅ Site management UI works (core features)
- ✅ Publishing settings work
- ✅ Task integration works
- ✅ Content sync works
### Phase 7 Testing
**Component Library Tests**:
- ✅ All components render correctly
- ✅ Component library is complete
- ✅ No duplicate components
- ✅ All components are accessible
- ✅ All components are responsive
**UI Tests**:
- ✅ Prompt management UI works
- ✅ Site management works end-to-end (advanced features)
- ✅ Layout system works
- ✅ Template system works
- ✅ CMS styling system works
---
## IMPLEMENTATION CHECKLIST
### Phase 5: Sites Renderer & Bulk Generation
#### Backend Tasks
- [ ] Create PublisherService
- [ ] Create SitesRendererAdapter
- [ ] Create DeploymentService
- [ ] Create PublishingRecord model
- [ ] Create DeploymentRecord model
- [ ] Create Publisher ViewSet
- [ ] Add bulk_generate_pages() to PageGenerationService
- [ ] Add create_tasks_for_pages() to PageGenerationService
- [ ] Add generate_all_pages action to SiteBlueprintViewSet
- [ ] Add create_tasks action to SiteBlueprintViewSet
- [ ] Database migrations
#### Frontend Tasks
- [ ] Create Sites container in docker-compose
- [ ] Create sites renderer frontend
- [ ] Create site definition loader
- [ ] Create layout renderer
- [ ] Create template system
- [ ] Import shared components
- [ ] Integrate file access
- [ ] Add "Generate All Pages" button to Site Builder
- [ ] Add page selection UI
- [ ] Add progress tracking
- [ ] Add bulk generation API methods
### Phase 6: Site Integration & Multi-Destination Publishing
#### Backend Tasks
- [ ] Create SiteIntegration model
- [ ] Create IntegrationService
- [ ] Create SyncService
- [ ] Create ContentSyncService
- [ ] Create BaseAdapter
- [ ] Refactor WordPressAdapter
- [ ] Create SitesRendererAdapter (if not done in Phase 5)
- [ ] Create ShopifyAdapter (skeleton)
- [ ] Extend PublisherService for multi-destination
- [ ] Extend Site model (site_type, hosting_type)
- [ ] Create Integration ViewSet
- [ ] Database migrations
#### Frontend Tasks
- [ ] Update Integration Settings page
- [ ] Create Publishing Settings page
- [ ] Create Site Management Dashboard (core)
- [ ] Create Site Content Editor (core)
- [ ] Create Page Manager (core)
- [ ] Create Site Settings (core)
- [ ] Create PlatformSelector component
- [ ] Create IntegrationStatus component
- [ ] Create PublishingRules component
- [ ] Update Writer UI for Site Builder tasks
### Phase 7: UI Components & Prompt Management
#### Backend Tasks
- [ ] Add site_structure_generation to AIPrompt.PROMPT_TYPE_CHOICES
- [ ] Create migration for new prompt type
#### Frontend Tasks
- [ ] Complete component library (blocks, layouts, templates)
- [ ] Add site_structure_generation to PROMPT_TYPES
- [ ] Add "Site Builder" section to Prompts page
- [ ] Add prompt editor for site structure generation
- [ ] Create Site List View
- [ ] Create Site Dashboard (advanced)
- [ ] Create Site Content Manager (advanced)
- [ ] Create Post Editor (advanced)
- [ ] Create Page Manager (advanced)
- [ ] Create Site Settings (advanced + SEO)
- [ ] Create Site Preview
- [ ] Create Layout Selector
- [ ] Create Template Library
- [ ] Create Layout Preview
- [ ] Create Template Customizer
- [ ] Create Style Editor
- [ ] Create CMS Theme System
- [ ] Create Style Presets
- [ ] Create Color Schemes
- [ ] Create Typography System
- [ ] Create Component Styles
- [ ] Write component tests
- [ ] Write component documentation
---
## SUCCESS CRITERIA
### Phase 5 Success Criteria
- ✅ Sites renderer loads site definitions
- ✅ Blocks render correctly using shared components
- ✅ File access works
- ✅ Deployment works end-to-end
- ✅ Sites are accessible publicly
- ✅ Multiple layouts supported
- ✅ Bulk page generation works
- ✅ Progress tracking works
### Phase 6 Success Criteria
- ✅ Site integrations work correctly
- ✅ Multi-destination publishing works
- ✅ WordPress sync works
- ✅ Two-way sync functions properly
- ✅ Site management UI works (core features)
- ✅ Publishing settings work
- ✅ Task integration works
### Phase 7 Success Criteria
- ✅ All components render correctly
- ✅ Component library is complete
- ✅ Prompt management UI works
- ✅ Site management works end-to-end (advanced features)
- ✅ Layout system works
- ✅ Template system works
- ✅ CMS styling system works
- ✅ No duplicate components
- ✅ All components are accessible and responsive
---
## TIMELINE SUMMARY
| Phase | Duration | Key Deliverables |
|-------|----------|------------------|
| **Phase 5** | 2.5-3.5 weeks | Sites renderer, bulk generation |
| **Phase 6** | 2.5-3 weeks | Multi-destination publishing, integrations |
| **Phase 7** | 3.5-4.5 weeks | Component library, prompt UI, advanced site management |
| **Total** | 8.5-11 weeks | Complete Sites Renderer, Publishing, and UI system |
---
## RISK ASSESSMENT
| Risk | Level | Mitigation |
|------|-------|------------|
| **Component library incompatibility** | MEDIUM | Early integration testing in Phase 5 |
| **File management access issues** | LOW | Use Phase 3's proven file service |
| **WordPress adapter refactor breaking existing** | MEDIUM | Comprehensive backward compatibility testing |
| **Bulk generation overloads system** | MEDIUM | Rate limiting, queue management |
| **Multi-destination publishing complexity** | MEDIUM | Adapter pattern, comprehensive testing |
| **CMS styling system complexity** | LOW | Incremental implementation, component-based |
---
## RELATED PHASES
- **Phase 0**: Credit system, Module Settings (backend)
- **Phase 1**: Service layer (ContentGenerationService, etc.)
- **Phase 3**: Site Builder foundation, shared components, file management
- **Phase 4**: Linker & Optimizer (content optimization)
---
**END OF PHASES 5-7 & 9 CONSOLIDATED DOCUMENT**