Introduction
Introduction to the Locomote.sh platform

Introduction


Introduction

Locomote.sh is a platform for building websites and progressive web apps (PWAs) with offline capabilities. The Locomote.sh platform is composed of both a server component and client code that runs in the browser. The server component is implemented in node.js, so the platform is a 100% JavaScript stack.

Locomote.sh is open-source software released under the Apache 2.0 OSS licence.

Why offline?

In a world of mobile internet, offline capabilites are increasingly important due to the wide variety of issues that can affect mobile connectivity, including:

  • Network coverage
  • Connection blackspots
  • Contention
  • Latency
  • Usage caps and connection throttling
  • Data plans

Providing your website or PWA with offline capabilities can help solve many of the problems that these issues present.

Offline and PWAs

The benefits that offline capabilities can give are most obvious when dealing with progressive web apps. A PWA is simply a web page, but when combined with JS code, APIs and web manifests, a PWA is able to reproduce a lot of the functionality that previously could only be provided by a native mobile app. Offline capabilities are vital to ensure that a PWA meets a user's basic expectations of how an app should work; for example, that it opens and loads quickly and reliably, with or without a network connection; and that the app continues to function and provides at least basic functionality when opened without a connection.

Offline and websites

Less obviously, offline capabilities can provide benefits for standard websites by ensuring that key content is always available and loads quickly, regardless of network conditions. Judicious use of offline content can improve the overall quality and feel of a website, by ensuring quick and reliable load times with or without a connection. Offline capabilities work naturally with static content and static websites, but even websites with a lot of dynamic content can benefit, for example by storing standard website assets like stylesheets and images in offline caches.

Locomote.sh

Locomote.sh is a platform for building websites and progressive web apps (PWAs) with offline capabilities. The platform is composed of the following parts:

  • A client-side service worker component, which downloads and caches content from the server and serves it to client pages in the browser.
  • A server component, written in node.js, which is responsible for serving content to the client service worker.
  • A client-side JS SDK which allows code running within a page to communicate with the service worker.
  • A collection of development tools used to build and publish content.

The Locomote.sh stack is 100% JavaScript.

How it works

The way that Locomote.sh supports offline content is quite different to that taken by other projects. Something like Workbox, for example, is a purely client-side solution. Locomote.sh, on the otherhand, takes a more dynamic, content driven approach, where the server dictates exactly what content is visible to the client and how and when it should cache it, or when the client should download content updates.

At the core of this approach are two HTTP-based APIs used by the client:

  • The updates API is a server feed that tells the client about the content that is available, and how and when to download updates to that content.
  • The query API allows the client to perform queries on available content in an offline-safe manner.

Both of these APIs, together with further details of Locomote.sh's operation, are described in the xxx section of this website.

Getting Locomote.sh

Locomote.sh is open-source software released under the Apache 2.0 OSS licence.

All Locomote.sh source code is available on GitHub.

Getting started

Locomote.sh is a client/server platform, so to start developing with Locomote.sh you will need a server to run your client code against.

The Locomote.sh build tools include a development server which can be used for local test and debug of client code, and which is sufficient to play around with Locomote.sh's features.

To run and test fully offline-capable clients, you will need to test against the Locomote.sh content server running on a publically accessible host with SSL. You can setup and host your own server using the instructions provided here; alternatively, a hosted server is available at https://cms.locomote.sh/dashboard/ where you can create a free to use account. This hosted server is provided as a convenience for developers wanting to try out Locomote.sh and who want to get up and running quickly with a minumum of effort; however, the service isn't (for now) intended for production or commercial usage, so if you plan to build a client-facing PWA or website using Locomote.sh then you will need to host the server component yourself.

Next steps

See the following guides: