Locomote.sh is designed by mobile developers, for mobile developers, and provides many unique features that make it an ideal platform for publishing content to mobile devices.

Publish to both web and mobile

Locomote.sh allows content to be published to both mobile and web in one single step.

Automatic content builds using Jekyll

Locomote.sh uses the Jekyll static website builder to generate published content from HTML or markdown. Built content can be published to web as a static website, or published to mobile for download and display within native web views in an app.

Full offline access to content published to mobile

Locomote’s SDKs for iOS and Android automatically manage the download and storage of published content, and provide full offline access to content and data, allowing apps to retain full functionality even when no connectivity is available.

Headless CMS using git to manage content

Locomote.sh is a headless CMS that uses git as its primary interface for managing content. This means that most developers already have the tools they need to start working with Locomote content, and is unlike other headless CMSs which additional coding or scripting needed to work with a web API.

Indexable app content

App content published through Locomote.sh is available for search-engine indexing, with no additional effort needed by the developer. Indexable app content allows search engines to present app content in results for searches made from a mobile device, and uses deep-linking to link directly to the content within the app from the search results. Indexable app content also works when a user hasn’t yet installed the app - instead, the search results link to the same content on the web. Locomote.sh can automatically generate smart banners which appear above content, and display a link to download the app from the appropriate app store.

Dropbox integration

With Locomote.sh it is possible to manage and edit content as Word docx files within a Dropbox hosted folder. Updates are automatically converted to HTML and imported into the CMS, from where they are published to web or replicated to mobile clients.

This capabilitity enables content management workflows where non-technical users are able to create and edit content using tools they are already familiar with.

Automatic app image asset generation

Mobile apps typically require multiple versions of image assets at different sizes, targeting the different display sizes supported by the app platform. When used properly, the different image sizes can minimize the size of the app download for individual users. Different image versions are often generated from a single source image, which is resized to match the target display characteristics.

Locomote.sh can be used to automate the generation and collation of full image catalogs from a small number of source images. Image catalogs can then be download and packaged with the app, but then updated remotely after the app has been published, without performing a new release cycle.

Locomote.sh can also be used to minimize app initial download sizes by pre-packaging an app with only a subset of the image assets, and downloading the rest after the app has been installed. (This is particularly beneficial when apps go through a frequent update cycle, as users only download the complete asset set after the initial install, and not after each subsequent upgrade).

Publish relational data to mobile

As well as web content and other documents, Locomote.sh can also be used to publish relational data that is replicated to a sqlite database on each user’s device. The data is fully queryable, is available offline, and can can be used to dynamically generate reports, graphs or other visualizations of the data.

In-app purchase management

Locomote.sh can be used to manage digital goods sold as in-app purchases. The recommended way of distributing such goods is to publish them by packaging them with the app, and then unlock user access when a valid app store receipt is received for the item. However, this has several major disadvantages, as it can greatly increase the size of the app download, limits the amount of digital goods which can be offered, requires a new app release (with new download) when the the catalog is updated, and makes it difficult for a user to access purchased goods across different devices. With Locomote’s solution, the digitial good is only downloaded once the user has purchased it, and can be easily updated or replicated to other devices owned by the user. The digital catalog can be as big as necessary, and changes can be made to the catalog without forcing the user to download a new app version.

Flexible, extensible, fine-grained access controls

Locomote.sh provides a powerful access control mechanism (ACM) which allows fine grained access controls to be defined for published content, and which can even be used to filter document contents according to a user’s access permissions. The ACM is customizable, and can be integrated with third-party user authentication systems. Access controls apply to both web and mobile content, and are applied automatically with no developer effort required.

Low-profile SDKs

Locomote.sh provides fully-featured SDKs for iOS and Android. These SKDs are low-profile, meaning they require minimum developer effort to use, don’t get in the developer’s way, and provide content and data access methods and mechanisms which are largely based on APIs and methods which the developer already uses. Access to content via the SDK can typically be setup with a single line of code. Content such as images and other files can be accessed via NSBundle on iOS, or as assets or resources on Android. Download and storage of content updates is performed automatically by the SDK, allowing the developer to focus on how to use the content, rather than how to manage it.


The Locomote.sh SDKs are built using the SCFFLD cross-platform dependency injection framework. SCFFLD has been designed to allow the development of content driven apps, which present dynamically-generated, native UIs from published content.