A Node.js framework to develop web applications and APIs for spatial data.

Here is a public accessible deployment:

The XYZ framework is designed to serve spatial data from PostGIS data sources without the need of additional services. The framework is modular with dependencies on third party open source modules such as the open GIS engine Turf, the Leaflet javascript engine for interactive maps as well as the jsoneditor library used for the modification of JSON workspaces.

XYZ is built with a PfaJn stack using Fastify as web server and JsRender for server side rendering of views.

The code repository should work out of the box (zero-configuration) as serverless deployments with Zeit Now.

This documentation is for site administrators as well as developers who would like to contribute to the project. A user guide for the XYZ frontend is hosted in a separate GitBook.


The XYZ project consists of a backend and frontend component. The frontend will also be referred to as the client or browser in this documentation. The frontend interface contains a map control. Due to the serverless nature of XYZ deployments, we attempt to limit the use of server or serverside when referring to the backend.

Environment Settings define the setup of the backend to serve a client application and API.

Workspaces are a set of instructions which define the use of data as layers and locations to be used by the client application and API.

An object entry is a JSON key/value pair. The key being the identifier to look up an entry and retrieve its value. A key must have a value associated. Key and value are separated by a colon. Keys must be a string. Values may be a string, numeric, boolean, an array or objects.

Locales are a collection of regional bounds, gazetteer and layers.

Layers are data tables which can be displayed and interacted with.

Locations are features in data tables which can be selected and interacted with.

Deployment is act of deploying code from the repository to run as an XYZ instance.

Endpoints (also routes) make up the XYZ application interface. Distinct endpoints can be used to request data and edit data or make changes to the application settings themselves. The domain route (root /) will request the client interface (frontend) which links a graphic user interface and map control to backend endpoints.

Token (also acccess token) is a signed JSON Web Token used to transmit information about a user account from the client to the XYZ backend.