TTWeb Basices 0. Intro

The TTWeb CMS can be thought of as simply a user interface that manages Jekyll-generated static websites stored in github repositories. We take advantage of Jekyll’s extensible plugins system to allow for some custom site generation processes and to add custom liquid tags, but at it’s core it’s just Jekyll.

How it works

Each website in TTWeb has a corresponding github repository. The master branch gets built and delivered to an S3 bucket for “staging” previews, and the production branch gets built and delivered to an S3 bucket to be served from a cloudfront instance as the live site.

When you create a draft in the CMS, a new branch will be created in github. You can clone this branch locally, make changes and push back up to that branch. When a user makes content or settings changes to a branch in the CMS, TTWeb creates a commit on that branch in github. Any change to the branch in github (either from a developer pushing code or a CMS user making edits) will trigger the site to be rebuilt so the changes are reflected in the preview/edit versions of the site. Depending on the complexity of the site setup, this may take few seconds or up to 30 seconds before the preview/edit version of the site is up to date.

When new changes are made to a draft we make comparison’s between that draft and it’s parent draft (which may be the staging/master branch) and between that draft and the Live/production branch. Depending on the mergeability between those branches, the CMS will show promote/publish buttons to allow users to push changes through to staging and/or live sites.

In additoin to a normal Jekyll build process, promotions to staging and production also include syncing with S3 buckets for site delivery, so these take a bit longer (1-5 minutes depending on the size of the site) and that process is reflected in a status bar at the top of a page.