This section gives an overview of the Locomote.sh system architecture, and describes its main functional components.
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.
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.
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.