Files
insertr/INSERTR-CONTENT-FEATURE.md
Joakim 87b78a4a69 Implement complete API routes and mock authentication for full CMS functionality
- Add comprehensive nested route structure with proper authentication layers
- Implement UpdateContent and ReorderCollectionItems handlers with repository pattern
- Add automatic mock JWT token fetching for seamless development workflow
- Restore content editing and collection reordering functionality broken after database refactoring
- Provide production-ready authentication architecture with development convenience
- Enable full CMS operations in browser with proper CRUD and bulk transaction support
2025-10-19 14:34:27 +02:00

397 lines
13 KiB
Markdown

# .insertr-content Feature Specification
**Status**: Design Phase
**Version**: 0.1.0
**Last Updated**: October 16, 2025
## Executive Summary
The `.insertr-content` feature extends Insertr's CMS capabilities to handle long-form, complex content like blog posts and articles. While `.insertr` handles individual elements and `.insertr-add` manages collections, `.insertr-content` provides a rich text editing experience for larger content blocks that require sophisticated formatting, structure, and content management workflows.
## Current State Analysis
### Existing Insertr Architecture
- **StyleAwareEditor**: Rich text editing with automatic style detection
- **HTML Preservation Engine**: Perfect fidelity editing maintaining all attributes
- **Style Detection Engine**: Converts nested elements to formatting options
- **Collection Management**: `.insertr-add` for dynamic content collections
- **Static Site Enhancement**: Build-time content injection and file processing
### Gaps for Blog/Article Content
- No unified interface for long-form content editing
- Limited content structure management (headings, sections, media)
- No publishing workflow (drafts, scheduling, SEO)
- Missing blog-specific features (excerpts, metadata, relationships)
## Feature Requirements
### Core Functionality
#### 1. Rich Content Editor
```html
<!-- Developer Implementation -->
<article class="insertr-content blog-post">
<h1>Existing Title</h1>
<p>Content with <strong class="brand-highlight">custom styling</strong></p>
<blockquote class="testimonial">Styled quotes</blockquote>
</article>
```
**Capabilities:**
- Inline editing mode with contextual toolbar
- Style detection and preservation of developer CSS classes
- Block-based content management (headings, paragraphs, lists, quotes)
- Media insertion and management
- Markdown shortcuts for power users
#### 2. Content Structure Management
- Automatic heading hierarchy detection and validation
- Drag & drop block reordering
- Content outline/table of contents generation
- Block templates for common patterns
- Live content structure preview
#### 3. Enhanced Writing Experience
- Distraction-free full-screen mode
- Auto-save with conflict resolution
- Word count and reading time estimation
- Typography optimization for readability
- Smart formatting (quotes, dashes, spacing)
### Static Site Integration
#### 1. Enhanced File Processing
```bash
# Enhance existing pages
insertr enhance blog-post.html --output dist/blog-post.html
# Generate content-driven pages
insertr enhance templates/ --output dist/ --generate-content
```
#### 2. Template-Based Generation
```yaml
# insertr.yaml
content_types:
blog_posts:
template: "templates/blog-post.html"
output_pattern: "blog/{slug}.html"
fields:
title: text
content: insertr-content
excerpt: text
published_date: date
author: text
```
#### 3. Content Storage Strategy
```go
type BlogPost struct {
ID string `json:"id"`
Slug string `json:"slug"`
Title string `json:"title"`
Content string `json:"content"` // Rich HTML from .insertr-content
Excerpt string `json:"excerpt"`
Author string `json:"author"`
PublishedAt time.Time `json:"published_at"`
Status string `json:"status"` // draft, published, archived
Template string `json:"template"`
Metadata JSON `json:"metadata"` // SEO, social media, etc.
}
```
### Blog Management Features
#### 1. Publishing Workflow
- Draft → Review → Published status management
- Content scheduling for future publication
- Version history with rollback capabilities
- Content approval workflow for teams
#### 2. SEO and Metadata
- Meta title and description management
- Open Graph and Twitter Card optimization
- Structured data (JSON-LD) generation
- Reading time and content analysis
- Heading structure validation
#### 3. Content Organization
- Categories and tags management
- Related content suggestions
- Content series/collections
- Author management and attribution
## Technical Architecture
### Frontend Components
#### 1. ContentEditor Class
```javascript
class ContentEditor extends StyleAwareEditor {
constructor(element, options) {
super(element, {
mode: 'content',
showOutline: true,
enableMarkdownShortcuts: true,
autoSave: true,
...options
});
}
// Content-specific methods
insertBlock(type) { /* Insert heading, quote, code block */ }
reorderBlocks() { /* Drag & drop reordering */ }
generateOutline() { /* TOC generation */ }
validateStructure() { /* SEO and accessibility checks */ }
}
```
#### 2. Enhanced UI Components
- **Block Selector**: Visual insertion of headings, quotes, media
- **Outline Panel**: Collapsible content structure navigator
- **Style Panel**: Context-aware formatting options
- **Media Browser**: Integrated asset management
- **Metadata Editor**: SEO and social media optimization
#### 3. Content Structure Engine
```javascript
class ContentStructureEngine extends StyleDetectionEngine {
analyzeContentBlocks(element) {
// Detect semantic structure (headings, sections, articles)
// Generate content outline and navigation
// Identify reusable content patterns
}
validateContentStructure(structure) {
// SEO heading hierarchy validation
// Accessibility compliance checks
// Content readability analysis
}
}
```
### Backend Enhancements
#### 1. Content Generation Pipeline
```go
func (e *Enhancer) EnhanceWithContentGeneration(inputDir, outputDir string) error {
// 1. Enhance existing HTML files (current behavior)
err := e.EnhanceDirectory(inputDir, outputDir)
if err != nil {
return err
}
// 2. Generate content-driven pages
return e.generateContentPages(outputDir)
}
```
#### 2. Template Processing
- Mustache/Handlebars template engine integration
- Content type-specific template routing
- Dynamic page generation from database content
- Static asset optimization and copying
#### 3. Content API Extensions
- Blog post CRUD operations
- Content publishing workflow endpoints
- SEO metadata management
- Media upload and optimization
- Version control and history tracking
## Implementation Phases
### Phase 1: Core Rich Text Editor (4-6 weeks)
**Deliverables:**
- Basic `.insertr-content` class recognition
- Inline editing with floating toolbar
- Style detection and preservation
- Auto-save functionality
- Block-based content management
**Success Criteria:**
- Edit long-form content in-place
- Preserve all existing CSS styling
- Support basic rich text formatting
- Maintain HTML structure integrity
### Phase 2: Content Structure & Management (4-6 weeks)
**Deliverables:**
- Content outline generation
- Drag & drop block reordering
- Media insertion and management
- Heading hierarchy validation
- SEO metadata editing
**Success Criteria:**
- Navigate content via outline
- Reorder content blocks visually
- Insert and manage images/media
- Validate content structure
- Edit meta descriptions and titles
### Phase 3: Static Site Integration (6-8 weeks)
**Deliverables:**
- Template-based page generation
- Content type configuration
- Publishing workflow
- Build process integration
- Documentation and examples
**Success Criteria:**
- Generate blog pages from templates
- Publish/unpublish content
- Integrate with existing build tools
- Complete documentation
- Demo implementations
### Phase 4: Advanced Features (6-8 weeks)
**Deliverables:**
- Collaborative editing
- Advanced SEO tools
- Content relationships
- Performance optimizations
- Third-party integrations
**Success Criteria:**
- Multiple editors simultaneously
- Comprehensive SEO analysis
- Related content suggestions
- Sub-second editor load times
- Hugo/Jekyll/Gatsby examples
## Potential Challenges & Mitigation Strategies
### Technical Challenges
#### 1. **Complex Content Structure Preservation**
**Challenge**: Maintaining perfect HTML fidelity while providing rich editing
**Mitigation**:
- Extend existing HTMLPreservationEngine
- Comprehensive test suite for edge cases
- Gradual rollout with fallback mechanisms
#### 2. **Performance with Large Content**
**Challenge**: Editor performance degrades with very long articles
**Mitigation**:
- Virtual scrolling for large documents
- Lazy loading of editor features
- Incremental parsing and rendering
- Memory management optimizations
#### 3. **Style Detection Complexity**
**Challenge**: Complex CSS styling may not map well to editing interfaces
**Mitigation**:
- Configurable style mapping rules
- Developer override mechanisms
- Graceful degradation to basic formatting
- Comprehensive style detection testing
### User Experience Challenges
#### 4. **Editor Complexity vs Simplicity**
**Challenge**: Power users need advanced features, casual users need simplicity
**Mitigation**:
- Progressive disclosure of features
- Configurable interface complexity
- Role-based feature availability
- Contextual help and onboarding
#### 5. **Content Migration**
**Challenge**: Moving existing blog content into Insertr system
**Mitigation**:
- Import tools for common formats (Markdown, HTML, WordPress)
- Bulk migration utilities
- Content validation and cleanup tools
- Migration documentation and tutorials
### Integration Challenges
#### 6. **Static Site Generator Compatibility**
**Challenge**: Different SSGs have different content conventions
**Mitigation**:
- Plugin architecture for SSG-specific adaptations
- Standard export formats (Markdown, JSON, HTML)
- Configuration templates for popular SSGs
- Community-driven integration examples
#### 7. **Build Process Integration**
**Challenge**: Fitting into existing development workflows
**Mitigation**:
- CLI-first approach matching existing tools
- CI/CD pipeline integration guides
- Watch mode for development
- Incremental build optimizations
### Content Management Challenges
#### 8. **Version Control and Conflicts**
**Challenge**: Managing content changes across multiple editors and builds
**Mitigation**:
- Operational transformation for real-time collaboration
- Clear conflict resolution interfaces
- Audit trail for all content changes
- Backup and recovery mechanisms
#### 9. **SEO and Performance Balance**
**Challenge**: Rich editing features may impact site performance
**Mitigation**:
- Minimal runtime overhead for visitors
- Conditional loading of editing features
- Static generation maintains performance
- Performance monitoring and optimization
## Success Metrics
### User Adoption
- Number of sites using `.insertr-content`
- Content creation frequency
- User retention and engagement
- Community feedback and contributions
### Technical Performance
- Editor load time (target: <2 seconds)
- Content save latency (target: <500ms)
- Static site build impact (target: <10% increase)
- Memory usage optimization
### Content Quality
- Content structure validation pass rate
- SEO score improvements
- Accessibility compliance metrics
- User-reported content issues
## Open Questions & Decisions Needed
### Design Decisions
1. **Block vs. Inline Editing**: Should we prioritize block-based editing (like Gutenberg) or seamless inline editing?
2. **Markdown Support**: How much markdown compatibility should we maintain vs. pure HTML?
3. **Template Engine**: Which template engine should we standardize on for content generation?
### Technical Decisions
1. **Database Schema**: How should we structure content types and metadata in the database?
2. **API Design**: Should we extend existing APIs or create new content-specific endpoints?
3. **Caching Strategy**: How do we handle content caching across the editing and static generation pipeline?
### Integration Decisions
1. **SSG Priority**: Which static site generators should we prioritize for integration?
2. **Media Handling**: Should we build media management or integrate with existing solutions?
3. **Deployment**: How do we handle automated deployments when content is published?
## Next Steps
1. **Technical Spike** (1 week): Prototype core editing interface with existing StyleAwareEditor
2. **Design Review** (1 week): Validate UI/UX approach with user research
3. **Architecture Review** (1 week): Finalize technical architecture and database schema
4. **Phase 1 Kickoff**: Begin implementation of core rich text editor
## References
- [CLASSES.md](./CLASSES.md) - Current class system documentation
- [StyleAwareEditor](./lib/src/ui/style-aware-editor.js) - Existing editor implementation
- [HTMLPreservationEngine](./lib/src/utils/html-preservation.js) - Current preservation approach
- [Content Enhancement Pipeline](./internal/content/enhancer.go) - Static site processing
---
*This document is a living specification that will evolve as we learn more about user needs and technical constraints. All stakeholders should contribute to its refinement.*