- Renamed `domain/` to `business/` to better reflect the organization of code by business logic. - Updated all relevant file paths and references throughout the project to align with the new structure. - Ensured that all models and services are now located under the `business/` directory, maintaining existing functionality while improving clarity.
4.9 KiB
4.9 KiB
PHASE 5: SITES RENDERER
Detailed Implementation Plan
Goal: Build Sites renderer for hosting public sites.
Timeline: 2-3 weeks
Priority: MEDIUM
Dependencies: Phase 3
TABLE OF CONTENTS
- Overview
- Sites Renderer Container
- Publisher Service
- Publishing Models
- Publisher API
- Multiple Layout Options
- Testing & Validation
- Implementation Checklist
OVERVIEW
Objectives
- ✅ Create Sites renderer container
- ✅ Build publisher service
- ✅ Support multiple layout options
- ✅ 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
SITES RENDERER CONTAINER
5.1 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 |
Docker Compose Configuration:
# 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
PUBLISHER SERVICE
5.2 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:
# 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)
PUBLISHING MODELS
5.3 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 |
PUBLISHER API
5.4 Publisher API
| Task | File | Dependencies | Implementation |
|---|---|---|---|
| Publisher ViewSet | modules/publisher/views.py |
PublisherService | API for publishing operations |
MULTIPLE LAYOUT OPTIONS
5.6 Multiple Layout Options
Layout Types:
- 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 |
| Layout Renderer | sites/src/utils/layoutRenderer.ts |
Phase 5 | Render different layouts |
TESTING & VALIDATION
5.5 Testing
Test Cases:
- ✅ Sites renderer loads site definitions
- ✅ Blocks render correctly
- ✅ Deployment works end-to-end
- ✅ Sites are accessible publicly
- ✅ Multiple layouts work correctly
IMPLEMENTATION CHECKLIST
Backend Tasks
- Create PublisherService
- Create SitesRendererAdapter
- Create DeploymentService
- Create PublishingRecord model
- Create DeploymentRecord model
- Create Publisher ViewSet
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
SUCCESS CRITERIA
- ✅ Sites renderer loads site definitions
- ✅ Blocks render correctly
- ✅ Deployment works end-to-end
- ✅ Sites are accessible publicly
- ✅ Multiple layouts supported
END OF PHASE 5 DOCUMENT