You are previewing Where Code and Content Meet: Design Patterns for Web Content Management and Delivery, Personalisation and User Participation.
O'Reilly logo
Where Code and Content Meet: Design Patterns for Web Content Management and Delivery, Personalisation and User Participation

Book Description

A practical go-to reference for Web developers programming custom software for Web sites

Most advanced Web sites or Web platforms have specific requirements that go beyond standard functionality; to meet such requirements, it's often necessary to develop custom software. This is the point where code and content meet, and where this book begins. Where Code and Content Meet presents a collection of real-world, tried and tested patterns that address content-related aspects of custom software development for advanced Web sites or platforms.

Mined from a series of successful Web projects, the patterns represent collected expertise of designers from several software development teams and serve as a practical guide to designing your own content-related custom components for your Web project. The patterns are independent of specific tools and technologies, and focus on non-functional requirements, with the overall goal of defining sustainable software architecture.

  • Presents a collection of tried and tested software patterns mined from a series of successful Web projects

  • Includes checklists for managing Web projects and real-world patterns from PLoP conferences

  • Illustrates use of software patterns through a case study that runs throughout the book and gradually evolves as the patterns are applied to it, one by one

  • Covers content modeling and content organization, navigation, findability, personalization, and user participation

By employing the software patterns included in Where Code and Content Meet, you'll learn how to program custom software faster and more efficiently.

Table of Contents

  1. Copyright
  2. Foreword
  3. Preface
    1. What this book is about
    2. What this book is not about
    3. Why this book matters
    4. Who should read this book
  4. Acknowledgements
    1. Project thanks
    2. Family thanks
  5. Introduction
    1. Project background
    2. Organisation of the book
  6. 1. Architecture Overview
    1. 1.1. Content Management and Content Delivery
      1. 1.1.1. Context
      2. 1.1.2. Problem
      3. 1.1.3. Example
      4. 1.1.4. Forces
      5. 1.1.5. Solution
      6. 1.1.6. Example resolved
      7. 1.1.7. Benefits
      8. 1.1.8. Liabilities
    2. 1.2. Dynamic Content Delivery plus Caching
      1. 1.2.1. Context
      2. 1.2.2. Problem
      3. 1.2.3. Example
      4. 1.2.4. Forces
      5. 1.2.5. Solution
      6. 1.2.6. Example resolved
      7. 1.2.7. Benefits
      8. 1.2.8. Liabilities
    3. 1.3. Sensible Client-Side Interaction
      1. 1.3.1. Context
      2. 1.3.2. Problem
      3. 1.3.3. Example
      4. 1.3.4. Forces
      5. 1.3.5. Solution
      6. 1.3.6. Example resolved
      7. 1.3.7. Benefits
      8. 1.3.8. Liabilities
    4. 1.4. Listener-Based Synchronisation
      1. 1.4.1. Context
      2. 1.4.2. Problem
      3. 1.4.3. Example
      4. 1.4.4. Forces
      5. 1.4.5. Solution
      6. 1.4.6. Example resolved
      7. 1.4.7. Benefits
      8. 1.4.8. Liabilities
    5. 1.5. Layered Architecture for Content Delivery
      1. 1.5.1. Context
      2. 1.5.2. Problem
      3. 1.5.3. Example
      4. 1.5.4. Forces
      5. 1.5.5. Solution
      6. 1.5.6. Example resolved
      7. 1.5.7. Benefits
      8. 1.5.8. Liabilities
  7. 2. Content Management
    1. 2.1. Content Type Hierarchy
      1. 2.1.1. Context
      2. 2.1.2. Problem
      3. 2.1.3. Example
      4. 2.1.4. Forces
      5. 2.1.5. Solution
      6. 2.1.6. Example resolved
      7. 2.1.7. Benefits
      8. 2.1.8. Liabilities
    2. 2.2. Decoupling of Content and Navigation
      1. 2.2.1. Context
      2. 2.2.2. Problem
      3. 2.2.3. Example
      4. 2.2.4. Forces
      5. 2.2.5. Solution
      6. 2.2.6. Example resolved
      7. 2.2.7. Benefits
      8. 2.2.8. Liabilities
    3. 2.3. Dynamic Content Linking
      1. 2.3.1. Context
      2. 2.3.2. Problem
      3. 2.3.3. Example
      4. 2.3.4. Forces
      5. 2.3.5. Solution
      6. 2.3.6. Example resolved
      7. 2.3.7. Benefits
      8. 2.3.8. Liabilities
    4. 2.4. Taxonomy Based on Keywords and Categories
      1. 2.4.1. Context
      2. 2.4.2. Problem
      3. 2.4.3. Example
      4. 2.4.4. Forces
      5. 2.4.5. Solution
      6. 2.4.6. Example resolved
      7. 2.4.7. Benefits
      8. 2.4.8. Liabilities
    5. 2.5. Workflow-Based Validation
      1. 2.5.1. Context
      2. 2.5.2. Problem
      3. 2.5.3. Example
      4. 2.5.4. Forces
      5. 2.5.5. Solution
      6. 2.5.6. Example resolved
      7. 2.5.7. Benefits
      8. 2.5.8. Liabilities
  8. 3. Content Delivery
    1. 3.1. Content Services
      1. 3.1.1. Context
      2. 3.1.2. Problem
      3. 3.1.3. Example
      4. 3.1.4. Forces
      5. 3.1.5. Solution
      6. 3.1.6. Example resolved
      7. 3.1.7. Benefits
      8. 3.1.8. Liabilities
    2. 3.2. Navigation Manager
      1. 3.2.1. Context
      2. 3.2.2. Problem
      3. 3.2.3. Example
      4. 3.2.4. Forces
      5. 3.2.5. Solution
      6. 3.2.6. Example resolved
      7. 3.2.7. Benefits
      8. 3.2.8. Liabilities
    3. 3.3. Search Manager
      1. 3.3.1. Context
      2. 3.3.2. Problem
      3. 3.3.3. Example
      4. 3.3.4. Forces
      5. 3.3.5. Solution
      6. 3.3.6. Example resolved
      7. 3.3.7. Benefits
      8. 3.3.8. Liabilities
    4. 3.4. System of Interacting Templates
      1. 3.4.1. Context
      2. 3.4.2. Problem
      3. 3.4.3. Example
      4. 3.4.4. Forces
      5. 3.4.5. Solution
      6. 3.4.6. Example resolved
      7. 3.4.7. Benefits
      8. 3.4.8. Liabilities
    5. 3.5. Template per View
      1. 3.5.1. Context
      2. 3.5.2. Problem
      3. 3.5.3. Example
      4. 3.5.4. Forces
      5. 3.5.5. Solution
      6. 3.5.6. Example resolved
      7. 3.5.7. Benefits
      8. 3.5.8. Liabilities
    6. 3.6. Self-Contained Pages
      1. 3.6.1. Context
      2. 3.6.2. Problem
      3. 3.6.3. Example
      4. 3.6.4. Forces
      5. 3.6.5. Solution
      6. 3.6.6. Example resolved
      7. 3.6.7. Benefits
      8. 3.6.8. Liabilities
  9. 4. Personalisation and User Participation
    1. 4.1. Content Filters
      1. 4.1.1. Context
      2. 4.1.2. Problem
      3. 4.1.3. Example
      4. 4.1.4. Forces
      5. 4.1.5. Solution
      6. 4.1.6. Example resolved
      7. 4.1.7. Benefits
      8. 4.1.8. Liabilities
    2. 4.2. Asynchronous Personalisation Engine
      1. 4.2.1. Context
      2. 4.2.2. Problem
      3. 4.2.3. Example
      4. 4.2.4. Forces
      5. 4.2.5. Solution
      6. 4.2.6. Example resolved
      7. 4.2.7. Benefits
      8. 4.2.8. Liabilities
    3. 4.3. Segment-Specific Caching
      1. 4.3.1. Context
      2. 4.3.2. Problem
      3. 4.3.3. Example
      4. 4.3.4. Forces
      5. 4.3.5. Solution
      6. 4.3.6. Example resolved
      7. 4.3.7. Benefits
      8. 4.3.8. Liabilities
    4. 4.4. Condensed Effectiveness Reports
      1. 4.4.1. Context
      2. 4.4.2. Problem
      3. 4.4.3. Example
      4. 4.4.4. Forces
      5. 4.4.5. Solution
      6. 4.4.6. Example resolved
      7. 4.4.7. Benefits
      8. 4.4.8. Liabilities
    5. 4.5. Decoupling of Edited Content and User Contributions
      1. 4.5.1. Context
      2. 4.5.2. Problem
      3. 4.5.3. Example
      4. 4.5.4. Forces
      5. 4.5.5. Solution
      6. 4.5.6. Example resolved
      7. 4.5.7. Benefits
      8. 4.5.8. Liabilities
    6. 4.6. Input Channel for User-Generated Content
      1. 4.6.1. Context
      2. 4.6.2. Problem
      3. 4.6.3. Example
      4. 4.6.4. Forces
      5. 4.6.5. Solution
      6. 4.6.6. Example resolved
      7. 4.6.7. Benefits
      8. 4.6.8. Liabilities
  10. 5. Deployment and Infrastructure
    1. 5.1. One Web Application for Content Delivery
      1. 5.1.1. Context
      2. 5.1.2. Problem
      3. 5.1.3. Example
      4. 5.1.4. Forces
      5. 5.1.5. Solution
      6. 5.1.6. Example resolved
      7. 5.1.7. Benefits
      8. 5.1.8. Liabilities
    2. 5.2. Dedicated Development and Production Environments
      1. 5.2.1. Context
      2. 5.2.2. Problem
      3. 5.2.3. Example
      4. 5.2.4. Forces
      5. 5.2.5. Solution
      6. 5.2.6. Example resolved
      7. 5.2.7. Benefits
      8. 5.2.8. Liabilities
    3. 5.3. Smooth Relaunch
      1. 5.3.1. Context
      2. 5.3.2. Problem
      3. 5.3.3. Example
      4. 5.3.4. Forces
      5. 5.3.5. Solution
      6. 5.3.6. Example resolved
      7. 5.3.7. Benefits
      8. 5.3.8. Liabilities
  11. Planning a Project
    1. 5.4. Requirements Analysis
      1. 5.4.1. Server-Side Requirements for Content Delivery
      2. 5.4.2. Client-Side Requirements for Content Delivery
      3. 5.4.3. Non-Functional Requirements for Content Delivery
      4. 5.4.4. Requirements for Content Management
    2. 5.5. Architecture
      1. 5.5.1. Architecture Fundamentals
      2. 5.5.2. Tools and Frameworks
      3. 5.5.3. Infrastructure and Security
    3. 5.6. Design and Implementation
      1. 5.6.1. Content Services and Domain Logic
      2. 5.6.2. Frameworks and Tool Integration
      3. 5.6.3. View Components
      4. 5.6.4. Content Management Components
    4. 5.7. Documentation
      1. 5.7.1. System Documentation
      2. 5.7.2. User Documentation
    5. 5.8. Launch / Relaunch
      1. 5.8.1. Deployment / Staging
      2. 5.8.2. Content Migration
      3. 5.8.3. Relaunch Management
  12. Choosing a Content Management System
    1. 5.9. Technology and Architecture
      1. 5.9.1. Vendor Information
      2. 5.9.2. Content Management
      3. 5.9.3. Content Delivery
  13. Final Remarks
  14. Pattern Thumbnails
    1. 5.10. Architecture Overview
      1. 5.10.1. Content Management and Content Delivery (1.1)
      2. 5.10.2. Dynamic Content Delivery plus Caching (1.2)
      3. 5.10.3. Sensible Client-Side Interaction (1.3)
      4. 5.10.4. Listener-Based Synchronisation (1.4)
      5. 5.10.5. Layered Architecture for Content Delivery (1.5)
    2. 5.11. Content Management
      1. 5.11.1. Content Type Hierarchy (2.1)
      2. 5.11.2. Decoupling of Content and Navigation (2.2)
      3. 5.11.3. Dynamic Content Linking (2.3)
      4. 5.11.4. Taxonomy Based on Keywords and Categories (2.4)
      5. 5.11.5. Workflow-Based Validation (2.5)
    3. 5.12. Content Delivery
      1. 5.12.1. Content Services (3.1)
      2. 5.12.2. Navigation Manager (3.2)
      3. 5.12.3. Search Manager (3.3)
      4. 5.12.4. System of Interacting Templates (3.4)
      5. 5.12.5. Template per View (3.5)
      6. 5.12.6. Self-Contained Pages (3.6)
    4. 5.13. Personalisation and User Participation
      1. 5.13.1. Content Filters (4.1)
      2. 5.13.2. Asynchronous Personalisation Engine (4.2)
      3. 5.13.3. Segment-Specific Caching (4.3)
      4. 5.13.4. Condensed Effectiveness Reports (4.4)
      5. 5.13.5. Decoupling of Edited Content and User Contributions (4.5)
      6. 5.13.6. Input Channel for User-Generated Content (4.6)
    5. 5.14. Deployment and Infrastructure
      1. 5.14.1. One Web Application for Content Delivery (5.1)
      2. 5.14.2. Dedicated Development and Production Environments (5.2)
      3. 5.14.3. Smooth Relaunch (5.3)
  15. Glossary
  16. References