feat: add platform homepage and content management system with improved UI

Implemented a comprehensive CMS for managing platform homepage and content pages:

- Platform homepage manager with template selection (default, minimal, modern)
- Content pages CRUD with platform defaults and vendor overrides
- Sidebar navigation for Content Management section
- Dedicated API endpoints for creating, updating, deleting pages
- Template support for customizable homepage layouts
- Header/footer navigation integration for content pages
- Comprehensive documentation for platform homepage setup
- Migration script for creating initial platform pages

UI improvements:
- Fixed action buttons styling in content pages table to match design system
- Added proper hover states, rounded corners, and better contrast
- Increased button size and padding for better usability

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-28 07:17:30 +01:00
parent 9f8ad71d85
commit 83a6831b2e
20 changed files with 4177 additions and 0 deletions

View File

@@ -176,6 +176,7 @@ class ContentPageService:
content: str,
vendor_id: Optional[int] = None,
content_format: str = "html",
template: str = "default",
meta_description: Optional[str] = None,
meta_keywords: Optional[str] = None,
is_published: bool = False,
@@ -194,6 +195,7 @@ class ContentPageService:
content: HTML or Markdown content
vendor_id: Vendor ID (None for platform default)
content_format: "html" or "markdown"
template: Template name for homepage/landing pages (default, minimal, modern, etc.)
meta_description: SEO description
meta_keywords: SEO keywords
is_published: Publish immediately
@@ -211,6 +213,7 @@ class ContentPageService:
title=title,
content=content,
content_format=content_format,
template=template,
meta_description=meta_description,
meta_keywords=meta_keywords,
is_published=is_published,
@@ -236,6 +239,7 @@ class ContentPageService:
title: Optional[str] = None,
content: Optional[str] = None,
content_format: Optional[str] = None,
template: Optional[str] = None,
meta_description: Optional[str] = None,
meta_keywords: Optional[str] = None,
is_published: Optional[bool] = None,
@@ -253,6 +257,7 @@ class ContentPageService:
title: New title
content: New content
content_format: New format
template: New template name
meta_description: New SEO description
meta_keywords: New SEO keywords
is_published: New publish status
@@ -277,6 +282,8 @@ class ContentPageService:
page.content = content
if content_format is not None:
page.content_format = content_format
if template is not None:
page.template = template
if meta_description is not None:
page.meta_description = meta_description
if meta_keywords is not None: