Skip to main content

Content & Media - Version Mapping

Domain: Content & Media First Introduced: MVP.0 Last Updated: 2025-10-25


Version Introduction Timeline

VersionStatusScopeDescription
MVP.0IMPLEMENTEDURL-Only MediaManual media URL entry, basic content management
MVP.1IMPLEMENTEDEnhanced ContentSame as MVP.0 with refinements
V1.0PLANNEDFull Media PipelineS3 upload, image processing, CDN delivery
V1.1FUTUREApproval WorkflowContent review and approval process
V1.2FUTURESEO OptimizationMeta tags, structured data, quality scoring
V2.0FUTUREMulti-LanguageTranslation workflow, localization
V2.1FUTUREAI FeaturesAutomated captions, smart tagging
V2.2FUTUREAdvanced MediaVideo transcoding, 3D tours, floor plans

MVP.0 - URL-ONLY MEDIA

Status: Implemented Scope: Basic content management without upload pipeline

Included Entities (7)

  1. Description - Property text content

    • Title, headline, body text
    • House rules, getting around
    • Language support (single language)
    • Version tracking
    • Published status
  2. MediaAsset - Visual content references

    • Manual URL entry
    • CDN URL storage
    • Position ordering
    • Primary image selection
    • Caption and alt text
    • Type classification (image, video, document)
  3. Amenity - Feature catalog (master data)

    • 50 standard amenities seeded
    • Category grouping (10 categories)
    • Channel mappings
    • Parametric values support
    • Icon identifiers
  4. SpaceAmenity - Property-amenity linkage

    • Many-to-many relationship
    • Parametric value storage
    • Featured amenity flagging
    • Notes and details
  5. SpaceAttributes - Flexible metadata (JSONB)

    • Max guests, bedrooms, bathrooms
    • Square footage, views, style
    • Check-in/check-out times
    • Minimum stay requirements
    • Schema-flexible design
  6. Tag - Content categorization

    • Global and org-specific tags
    • Type classification
    • Color coding for UI
    • Usage tracking
  7. UnitSnapshot - Version history

    • Complete content snapshots
    • Immutable audit trail
    • Diff hash calculation
    • Change summaries
    • Rollback support

Key Features

Content Management:

  • Rich text descriptions (HTML, Markdown, plaintext)
  • XSS sanitization
  • Version tracking
  • Publish/draft states

Media Management:

  • Manual URL entry
  • Position-based ordering
  • Primary image designation
  • Caption and alt text
  • Gallery display

Amenity Catalog:

  • 50 pre-seeded standard amenities
  • 10 categories (location, rooms, kitchen, etc.)
  • Parametric amenities (e.g., parking count)
  • Featured amenity selection (max 5)

Flexible Attributes:

  • JSONB storage for extensibility
  • Standard attribute schema
  • No table alterations for new attributes
  • Fast JSONB queries (GIN index)

Content Versioning:

  • Automatic snapshot creation
  • Diff tracking
  • Rollback capability (V1.0+)
  • 90-day retention (last 10 versions)

Business Rules

  1. Each Space requires one published Description
  2. Each Space requires one primary MediaAsset
  3. MediaAsset positions must be unique per Space
  4. Maximum 50 media assets per Space
  5. All media URLs must be HTTPS
  6. Featured amenities limited to 5 per Space
  7. HTML content sanitized to prevent XSS
  8. Description body maximum 10,000 characters
  9. Snapshots created on every content update
  10. Soft deletes for Descriptions and MediaAssets

Database Objects

Tables: 7 (Description, MediaAsset, Amenity, SpaceAmenity, SpaceAttributes, Tag, UnitSnapshot) Indexes: 20+ Constraints: 10+ JSONB Support: SpaceAttributes, UnitSnapshot, Amenity.channel_mappings

API Endpoints

Descriptions:

  • GET /spaces/:id/description - Get description
  • POST /spaces/:id/description - Create description
  • PUT /descriptions/:id - Update description
  • DELETE /descriptions/:id - Soft delete

Media:

  • GET /spaces/:id/media - List media
  • POST /spaces/:id/media - Add media URL
  • PUT /media/:id - Update media
  • DELETE /media/:id - Remove media
  • PUT /media/:id/reorder - Change position

Amenities:

  • GET /amenities - List catalog
  • GET /spaces/:id/amenities - Get space amenities
  • POST /spaces/:id/amenities - Add amenity
  • DELETE /space-amenities/:id - Remove amenity

Attributes:

  • GET /spaces/:id/attributes - Get attributes
  • PUT /spaces/:id/attributes - Update attributes (merge)

Tags:

  • GET /tags - List tags
  • POST /tags - Create tag
  • GET /spaces/:id/tags - Get space tags
  • POST /spaces/:id/tags - Add tag

Snapshots:

  • GET /spaces/:id/snapshots - List versions
  • GET /snapshots/:id - Get snapshot details

Standard Amenity Catalog

50 Amenities Across 10 Categories:

  1. Location & Views (6): oceanfront, beachfront, waterfront, mountain_view, city_view, garden_view
  2. Rooms & Bedrooms (5): bedrooms, bathrooms, king_bed, queen_bed, twin_bed
  3. Kitchen & Dining (7): full_kitchen, dishwasher, microwave, coffee_maker, outdoor_grill, dining_table, outdoor_dining
  4. Bathroom Essentials (5): shampoo, hot_water, hair_dryer, bathtub, outdoor_shower
  5. Climate Control (4): air_conditioning, heating, ceiling_fans, fireplace
  6. Entertainment & Tech (6): wifi, tv, streaming_services, cable_tv, sound_system, board_games
  7. Outdoor & Pool (8): private_pool, pool_heated, hot_tub, beach_access, outdoor_space, bbq_area, fire_pit, ocean_view
  8. Parking & Access (3): parking, ev_charger, wheelchair_accessible
  9. Family Features (6): crib, high_chair, kids_toys, safety_gates, pool_fence, changing_table
  10. Services & Extras (10): washer, dryer, iron, hangers, cleaning_included, linens_included, towels_included, concierge, private_chef, gym

Limitations (Deferred to V1.0+)

No Upload Pipeline:

  • No file upload capability
  • No S3 integration
  • No image processing
  • No CDN signed URLs
  • No automatic resizing
  • No format conversion

Single Language Only:

  • English default
  • No translation support
  • No multi-language UI

No Workflow:

  • No draft/review/published states
  • Immediate publication
  • No approval process

No SEO Features:

  • No meta tags
  • No structured data
  • No quality scoring

MVP.1 - ENHANCED CONTENT

Status: Implemented Scope: Same as MVP.0 with refinements

Changes from MVP.0

Minor Enhancements:

  • UI/UX improvements
  • Query optimization
  • Bug fixes
  • Performance tuning

No New Entities No Schema Changes No New Features


V1.0 - FULL MEDIA PIPELINE

Status: Planned Target: Production release with full upload capabilities

New Infrastructure

S3 Storage:

  • Bucket: tvl-media-{env}
  • Folder structure: {org_id}/{space_id}/images/
  • Lifecycle policies
  • Versioning enabled

CloudFront CDN:

  • Global distribution
  • Signed URLs (24-hour expiry for previews, 1-year for published)
  • Cache optimization
  • Gzip/Brotli compression
  • HTTP/2 and HTTP/3

Lambda Processing:

  • Sharp library for image processing
  • Automated variant generation
  • WebP conversion
  • EXIF stripping
  • Metadata extraction

New Features

Upload Pipeline:

  1. Client requests pre-signed S3 URL
  2. Direct upload to S3
  3. S3 trigger invokes Lambda
  4. Lambda generates variants:
    • thumbnail (200px)
    • small (400px)
    • medium (800px)
    • large (1200px)
    • original (unmodified)
  5. WebP format for all (except original)
  6. Update MediaAsset record with variants

Media Processing:

  • Automatic resizing
  • Format conversion (WebP 30-50% smaller)
  • EXIF metadata extraction
  • GPS coordinate stripping (privacy)
  • Dimension detection

Status Tracking:

  • pending → processing → ready → failed
  • Background job monitoring
  • Failure notification

Content Approval Workflow:

  • Draft/Review/Published states
  • Approval queue
  • Diff preview
  • Comment threads
  • Bulk operations

Schema Changes

MediaAsset Extensions:

  • status field (pending, processing, ready, failed)
  • variants JSONB (URLs for all sizes)
  • processing_error TEXT
  • exif_data JSONB

New Indexes:

  • idx_media_status for background jobs
  • idx_media_processing for monitoring

API Changes

New Endpoints:

  • POST /media/upload-url - Get pre-signed URL
  • POST /media/:id/process - Trigger reprocessing
  • GET /media/:id/variants - Get all variants

Modified Endpoints:

  • POST /spaces/:id/media - Now accepts file upload or URL

Performance Optimizations

Caching:

  • Redis cache for Space content bundles
  • 1-hour TTL
  • Invalidation on update

Lazy Loading:

  • Native loading="lazy" attribute
  • Intersection Observer
  • Blur-up placeholders (LQIP)

Responsive Images:

  • <picture> element
  • Srcset for different sizes
  • Automatic format selection (WebP with fallback)

Security Enhancements

Access Control:

  • Pre-signed URLs prevent direct access
  • UUID filenames prevent guessing
  • Origin Access Identity (OAI)

Content Sanitization:

  • Enhanced HTML sanitization
  • Allowed tags whitelist
  • URL validation

Privacy:

  • EXIF GPS stripping
  • Metadata anonymization
  • Timestamp preservation only

Deferred to V1.1+

  • Multi-language content
  • Translation API
  • SEO metadata fields
  • Content approval workflow (partial in V1.0)

V1.1 - CONTENT APPROVAL WORKFLOW

Status: Future Scope: Review and approval process

New Features

Approval States:

  • Draft → Review → Published → Archived
  • State transition tracking
  • Reviewer assignment

Review Tools:

  • Diff view (draft vs published)
  • Comment threads
  • Approval/rejection
  • Change history

Bulk Operations:

  • Multi-property approvals
  • Batch publishing
  • Mass updates

Impact

  • Quality control
  • Brand consistency
  • Compliance review

V1.2 - SEO OPTIMIZATION

Status: Future Scope: Search engine optimization

New Features

Meta Tags:

  • meta_title (max 60 chars)
  • meta_description (max 160 chars)
  • meta_keywords
  • Open Graph tags
  • Twitter Card tags

Structured Data:

  • JSON-LD markup
  • Schema.org Vacation Rental
  • Rich snippets

Content Scoring:

  • Completeness score (0-100%)
  • Quality assessment
  • Missing field detection
  • Best practice recommendations

AI Alt Text:

  • Automatic generation via OpenAI Vision
  • Accessibility compliance
  • SEO benefit

Database Changes

Description Extensions:

  • meta_title VARCHAR(60)
  • meta_description VARCHAR(160)
  • meta_keywords VARCHAR(255)
  • og_tags JSONB
  • content_score INTEGER

Impact

  • Improved search rankings
  • Better click-through rates
  • Accessibility compliance

V2.0 - MULTI-LANGUAGE MANAGEMENT

Status: Future Scope: International content support

New Features

Translation Workflow:

  • DeepL API integration
  • Manual translation option
  • Translation memory
  • Glossary management

Language Variants:

  • Per-language Descriptions
  • Fallback hierarchy (user → org default → English)
  • Completeness tracking

Regional Content:

  • en-US vs en-GB
  • Currency formatting
  • Date format localization

Database Changes

Enhanced Language Support:

  • Multiple Descriptions per Space (one per language)
  • Language completeness tracking
  • Translation status

Impact

  • International property support
  • Global guest reach
  • Localized experiences

V2.1 - AI-POWERED FEATURES

Status: Future Scope: Machine learning enhancements

New Features

Automated Captions:

  • OpenAI Vision API
  • Scene detection
  • Object recognition
  • Descriptive alt text

Smart Tagging:

  • Image content analysis
  • Automatic tag suggestion
  • Category classification

Content Quality:

  • Grammar and spelling
  • Readability scoring
  • Tone analysis
  • Improvement suggestions

Duplicate Detection:

  • Perceptual hashing
  • Similar image detection
  • Cross-property deduplication

Optimal Ordering:

  • ML-based image ranking
  • Conversion optimization
  • A/B testing support

Impact

  • Reduced manual effort
  • Improved content quality
  • Better conversion rates

V2.2 - ADVANCED MEDIA

Status: Future Scope: Rich media types

New Features

Video Support:

  • AWS Elemental MediaConvert
  • Adaptive bitrate streaming
  • Thumbnail generation
  • Subtitle support

360-Degree Photos:

  • Panoramic viewer
  • Virtual tour creation
  • Hotspot navigation

3D Tours:

  • Matterport integration
  • Dollhouse view
  • Measurement tools

Floor Plans:

  • PDF upload
  • Interactive viewer
  • Annotation tools

Drone Footage:

  • Aerial photography
  • Video integration
  • Regulatory compliance tracking

Impact

  • Premium property presentation
  • Enhanced guest experience
  • Competitive differentiation

Feature Availability Matrix

FeatureMVP.0MVP.1V1.0V1.1V1.2V2.0+
Descriptions
Manual Media URLs
Amenity Catalog (50)
JSONB Attributes
Tags
Content Versioning
File Upload
Image Processing
CDN Delivery
WebP Conversion
Approval WorkflowPartial
SEO Meta Tags
Content Scoring
Multi-Language
Translation API
AI Captions
Smart Tagging
Video Transcoding
3D Tours

Dependencies

Upstream Dependencies (Required First)

  • Identity & Tenancy (MVP.0) - Org/Account structure
  • Authorization & Access (MVP.0) - Permission enforcement
  • Supply (MVP.0) - Spaces and Units

Downstream Dependencies (Requires This Domain)

  • Channels & Distribution (V1.0+) - Content syndication
  • Search & Indexing (V1.0+) - Searchable content
  • Analytics & Audit (MVP.0+) - Content change tracking

Migration Path

MVP.0 (Initial Implementation)

Schema Deployment:

  1. Create all 7 tables
  2. Add indexes and constraints
  3. Seed Amenity catalog (50 items)
  4. Create global tags

Data Seeding:

  • Standard amenities
  • Global tags
  • Default SpaceAttributes schema

Estimated Effort: 2 weeks

MVP.1 (No Migration)

No schema or data changes. Only UI/UX refinements.

MVP.0/MVP.1 → V1.0

Infrastructure Setup:

  1. Create S3 bucket with lifecycle policies
  2. Configure CloudFront distribution
  3. Deploy Lambda processing function
  4. Configure IAM roles and policies
  5. Set up pre-signed URL generation

Schema Migration:

  1. Add status to MediaAsset
  2. Add variants JSONB to MediaAsset
  3. Add processing_error to MediaAsset
  4. Add exif_data to MediaAsset
  5. Create new indexes

Data Migration:

  1. Set all existing MediaAssets to status='ready'
  2. No URL migration needed (URLs remain valid)
  3. Variants will be NULL for legacy assets

Feature Rollout:

  1. Deploy upload API endpoints
  2. Deploy Lambda processing
  3. Configure CloudFront
  4. Enable S3 triggers
  5. Monitor and validate

Estimated Effort: 4-6 weeks

  • Infrastructure: 1 week
  • Lambda development: 1 week
  • API implementation: 2 weeks
  • Testing and validation: 1-2 weeks

V1.0 → V1.1 (Approval Workflow)

Schema Changes:

  1. Add status to Description (draft, review, published, archived)
  2. Create content_reviews table
  3. Add approval tracking fields

Estimated Effort: 2-3 weeks

V1.1 → V1.2 (SEO)

Schema Changes:

  1. Extend Description with meta fields
  2. Add content scoring fields
  3. Create SEO validation rules

Estimated Effort: 2-3 weeks



Document Status: Complete Total Lines: 620+ Coverage: MVP.0 through V2.2