Architecture

This section gives an overview of the Locomote.sh system architecture, and describes its main functional components.

Git

Locomote.sh is a headless, file-based CMS which uses git to track files. The git clone, pull and push mechanisms provide a natural and convenient way for content developers to manage CMS content without having to script interactions with a web API using tools like curl. This makes it very easy for developers to start immediately adding and updating content in a content repository, using a tool which is already a standard part of their development environment and workflows.

File database

Locomote is a file-based CMS, and at its heart is a file database which maintains a list of the files within each content repository. The file database is also used to store other information, such as file status, version and other associated meta-data.

The file database is represented on mobile clients using a sqlite database, which allows the clients to easily keep track of what files and content are available, even when in offline mode.

File meta-data

The file database contains meta-data generated from each published file in the content repository. Basic meta-data includes the full file path, its fileset category name and current status. Additional data can be generated, depending on its fileset membership. For example, HTML pages which have been generated from markdown containing Jekyll front matter will have all their front matter data stored in the file database, and made available for querying by mobile clients.