## Introduction

### Goal

Understand the design concepts behind Bloomreach Content's site configuration model and the different model entities and how they relate to each other.

### Background

Managing site configuration is an essential development task when integrating Bloomreach Content. It involves configuring different entities that together make up the pages to be rendered by the [front-end application](🔗).

Site configuration is pre-defined by Site developers through the [Site Management API](🔗) (or the _Site development_ app, a GUI layer on top of the API) and modified by Site editors through the [Experience Manager Application](🔗) and delivered to the front-end application through the [Delivery API's](🔗) [Pages](🔗) endpoint.

This documentation explains the site configuration model's underlying design concepts and the model's entities and their relationships.

### Related Documentation

  • [Site Management API](🔗) reference documentation

  • [Get Started with Bloomreach Content](🔗) tutorial, specifically [Milestone 4: Create a Component](🔗)

  • [Developer Experience](🔗) guide, specifically [Site Development](🔗)

## Design Concepts

### Hierarchical Model-View-Controller

The [hierarchical model-view-controller](🔗) (HMVC) design pattern is central to the site configuration model and the main end product derived from it: pages. Each page is a [layout](🔗) tree consisting of containers and [components](🔗). Each component consists of a _model_ (content and/or product data), a _view_ (presentation), and a _controller_ (logic). All three of these are managed through Bloomreach Content: 

  • _Model_: [content editing](🔗) is core functionality of Bloomreach Content.

  • _View_: presentation is supported through configurable [component parameters](🔗), the [Delivery API's](🔗) [Pages](🔗) endpoint, and the [Bloomreach SPA SDK](🔗).

  • _Controller_: built-in base components provide out-of-the-box configurable backend functionality such as querying and retrieving content and/or product data.

### Routing

The wiring for the HMVC pages is managed through [routing configuration](🔗). Routes map requested URLs to layouts and content items, resulting in the actual page objects served through the [Delivery API's](🔗) [Pages](🔗) endpoint and rendered by the front-end application.

## Entities and Relationships Overview

The following diagram depicts all the site configuration entities along with their relationships. Entities in red color denote that the entity is not, or only partially, managed via the [Site Management API](🔗).

The following entities are explained in more detail on their respective documentation pages:

  • [Channels](🔗)

  • [Components](🔗)

  • [Layouts](🔗)

  • [Routes](🔗)

  • [Menus](🔗)