feat(hosting): add industry template infrastructure (Workstream 3B)
5 industry templates as JSON presets, each with theme + multi-page content:
- generic: clean minimal (homepage, about, contact)
- restaurant: warm tones, Playfair Display (homepage, about, menu, contact)
- construction: amber/earth tones, Montserrat (homepage, services, projects, contact)
- auto-parts: red/bold, parts-focused (homepage, catalog, contact)
- professional-services: navy/blue, Merriweather (homepage, services, team, contact)
Each template has:
- meta.json (name, description, tags, languages)
- theme.json (colors, fonts, layout, header style)
- pages/*.json (section-based homepage + content pages with i18n)
- {{placeholder}} variables for prospect data injection
TemplateService loads from templates_library/ directory with caching.
GET /admin/hosting/sites/templates endpoint to list available templates.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
21
app/modules/hosting/schemas/template.py
Normal file
21
app/modules/hosting/schemas/template.py
Normal file
@@ -0,0 +1,21 @@
|
||||
# app/modules/hosting/schemas/template.py
|
||||
"""Pydantic schemas for template responses."""
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class TemplateResponse(BaseModel):
|
||||
"""Schema for a single template."""
|
||||
|
||||
id: str
|
||||
name: str
|
||||
description: str
|
||||
tags: list[str] = []
|
||||
languages: list[str] = []
|
||||
pages: list[str] = []
|
||||
|
||||
|
||||
class TemplateListResponse(BaseModel):
|
||||
"""Schema for template list response."""
|
||||
|
||||
templates: list[TemplateResponse]
|
||||
Reference in New Issue
Block a user