7.8 KiB
7.8 KiB
PHASE 6: SITE INTEGRATION & MULTI-DESTINATION PUBLISHING
Detailed Implementation Plan
Goal: Support multiple publishing destinations (WordPress, Sites, Shopify).
Timeline: 2-3 weeks
Priority: MEDIUM
Dependencies: Phase 5
TABLE OF CONTENTS
- Overview
- Site Integration Models
- Integration Service
- Publishing Adapters
- Multi-Destination Publishing
- Site Model Extensions
- Integration API
- Integration UI
- Publishing Settings UI
- Site Management UI
- Testing & Validation
- Implementation Checklist
OVERVIEW
Objectives
- ✅ Support multiple site integrations per site
- ✅ Multi-destination publishing (WordPress, Sites, Shopify)
- ✅ Two-way sync with external platforms
- ✅ Site management UI (CMS)
- ✅ Publishing settings UI
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
SITE INTEGRATION MODELS
6.1 Site Integration Models
| Task | File | Dependencies | Implementation |
|---|---|---|---|
| SiteIntegration Model | domain/integration/models.py |
Phase 1 | Store integration configs |
SiteIntegration Model:
# domain/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'
INTEGRATION SERVICE
6.2 Integration Service
| Task | File | Dependencies | Implementation |
|---|---|---|---|
| IntegrationService | domain/integration/services/integration_service.py |
Phase 1 | Manage integrations |
| SyncService | domain/integration/services/sync_service.py |
Phase 1 | Handle two-way sync |
PUBLISHING ADAPTERS
6.3 Publishing Adapters
| Task | File | Dependencies | Implementation |
|---|---|---|---|
| BaseAdapter | domain/publishing/services/adapters/base_adapter.py |
Phase 5 | Base adapter interface |
| WordPressAdapter | domain/publishing/services/adapters/wordpress_adapter.py |
EXISTING (refactor) | WordPress publishing |
| SitesRendererAdapter | domain/publishing/services/adapters/sites_renderer_adapter.py |
Phase 5 | IGNY8 Sites deployment |
| ShopifyAdapter | domain/publishing/services/adapters/shopify_adapter.py |
Phase 5 (future) | Shopify publishing |
MULTI-DESTINATION PUBLISHING
6.4 Multi-Destination Publishing
| Task | File | Dependencies | Implementation |
|---|---|---|---|
| Extend PublisherService | domain/publishing/services/publisher_service.py |
Phase 5 | Support multiple destinations |
| Update PublishingRecord | domain/publishing/models.py |
Phase 5 | Track multiple destinations |
Multi-Destination Publishing:
# domain/publishing/services/publisher_service.py
class PublisherService:
def publish(self, content, destinations):
"""Publish content to multiple destinations"""
results = []
for destination in destinations:
adapter = self.get_adapter(destination)
result = adapter.publish(content)
results.append(result)
return results
SITE MODEL EXTENSIONS
6.5 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.1 | Link to SiteIntegration |
INTEGRATION API
6.6 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 UI
6.7 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 |
PUBLISHING SETTINGS UI
6.8 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 |
SITE MANAGEMENT UI
6.9 Individual Site Management (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:
- View all pages/posts for a site
- Add new pages
- Remove pages
- Edit page content
- Manage page order
- Change page templates
- Update site settings
- Preview site
TESTING & VALIDATION
6.9 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
IMPLEMENTATION CHECKLIST
Backend Tasks
- Create SiteIntegration model
- Create IntegrationService
- Create SyncService
- Create BaseAdapter
- Refactor WordPressAdapter
- Create SitesRendererAdapter
- Extend PublisherService for multi-destination
- Extend Site model
- Create Integration ViewSet
Frontend Tasks
- Update Integration Settings page
- Create Publishing Settings page
- Create Site Management Dashboard
- Create Site Content Editor
- Create Page Manager
- Create Site Settings page
SUCCESS CRITERIA
- ✅ Site integrations work correctly
- ✅ Multi-destination publishing works
- ✅ WordPress sync works
- ✅ Two-way sync functions properly
- ✅ Site management UI works
END OF PHASE 6 DOCUMENT