### TLDR

This Blog Post model is a simple layout for building out content-rich blogs. The main section of the post contains fields with applied validations for slugs, along with relations to authors, categories, and tags, as relations.

The content field is a beefed up [Structured Text](https://www.datocms.com/docs/content-modelling/structured-text.md) field with the ability to refer other models, as well as the option to embed several [blocks](https://www.datocms.com/docs/content-modelling/blocks.md).

The exported JSON comes with all relations and blocks along with the post.

## Schema Structure

The Blog Post comes with "Real World" Validations in place, primarily allowing for a [DRAFT/PUBLISHED](https://www.datocms.com/docs/general-concepts/draft-published.md) workflow and the ability to save (but not publish) drafts that don't pass all validation rules so as to not disrupt an editor's workflow.

The model also has some SEO fallbacks in place, to always inherit the `og:title`, `og:desc`, and `og:image` fields from specific fields in the model, unless overridden when editing a post.

The structure of the Schema is as follows:

### Details

This fieldset contains all the "necessary" attributes of a blog post aside from the content itself.

(Image content)

Using a combination of `string`, `asset`, and `relation` fields, editors can establish the Title, Description, Featured Image, and the Slug (with validation to derive unique slugs from the title) of the post.

(Image content)

Additionally, there's relations to models for adding Tags, Catagories, and multiple Authors to each post - standalone models of their own to allow for reusable content best practices.

### Content

We've built it out to give editors the best possible experience that focuses on the content, with the entire post being a Structured Text Field.

(Image content)

The field allows for embedding relations to other models as well as blocks, both as standalone and inline.

The accepted relations are to other models such as Tags, Authors, Categories, Landing Pages, and other Blog Posts, for whenever a new record needs to refer to existing ones, encouraging the use of inline references rather than absolute URLs.

### SEO & Social

Finally, there's a Social Preview field for editors to get a quick glance of how their content would look on popular platforms like LinkedIn, Facebook, and Slack.

(Image content)

The fields here will default to fallbacks set in the model validations, however editors can change this based on their preferences.

## Blocks

This model heavily utilizes blocks in the Structured Text field to give editors a rich content experience.

The Structured Text field can accept the following blocks:

-   `Statistic`: A simple block allowing to flex any applicable stats or callout numbers.
-   `Video`: The ability to embed videos hosted in DatoCMS into a blog post.
    
-   `CTA`: A simple callout containing a title, description, and button, utilizing the Conditional Fields plugin depending on whether the editor wants to place an internal or external URL.
-   `Media Gallery`: The ability to build rich grids of images, videos, or other media types.
    
-   `Button`: A simple button utilizing the Conditional Fields plugin depending on whether the editor wants to add an internal or external link.
-   `FAQ`: A simple Question/Answer block made of string fields.
    
-   `Social Proof`: A grid of `Testimonial` blocks to build carousels of quotes.
-   `Testimonial`: A simple quote attributed to a person, which in turn can build `Social Proof` sections.
    
-   `Image`: The ability to embed a single image hosted in DatoCMS.
    

Additionally, the following blocks can also be added inline:

-   `Social Link`: A simple link to a social media platform.
-   `Button`: Same as above, but within a section of content rather than as a standalone block.
    
-   `Image`: The ability to add small images inline, particularly useful for icons or logos.
    

## Editor Experience

With the combination of fieldsets and blocks, the editors will see a clean editing UI when creating blog posts with a straightforward flow of fields 👇

(Video content)