9 phases
This commit is contained in:
181
docs/planning/phases/PHASE-5-SITES-RENDERER.md
Normal file
181
docs/planning/phases/PHASE-5-SITES-RENDERER.md
Normal file
@@ -0,0 +1,181 @@
|
||||
# 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
|
||||
|
||||
1. [Overview](#overview)
|
||||
2. [Sites Renderer Container](#sites-renderer-container)
|
||||
3. [Publisher Service](#publisher-service)
|
||||
4. [Publishing Models](#publishing-models)
|
||||
5. [Publisher API](#publisher-api)
|
||||
6. [Multiple Layout Options](#multiple-layout-options)
|
||||
7. [Testing & Validation](#testing--validation)
|
||||
8. [Implementation Checklist](#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**:
|
||||
```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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PUBLISHER SERVICE
|
||||
|
||||
### 5.2 Publisher Service
|
||||
|
||||
| Task | File | Dependencies | Implementation |
|
||||
|------|------|--------------|----------------|
|
||||
| **PublisherService** | `domain/publishing/services/publisher_service.py` | Phase 1 | Main publishing service |
|
||||
| **SitesRendererAdapter** | `domain/publishing/services/adapters/sites_renderer_adapter.py` | Phase 3 | Adapter for Sites renderer |
|
||||
| **DeploymentService** | `domain/publishing/services/deployment_service.py` | Phase 3 | Deploy sites to renderer |
|
||||
|
||||
**PublisherService**:
|
||||
```python
|
||||
# domain/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** | `domain/publishing/models.py` | Phase 1 | Track content publishing |
|
||||
| **DeploymentRecord Model** | `domain/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** | `domain/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**
|
||||
|
||||
Reference in New Issue
Block a user