Giraffe’s frontend SDK is a powerful way to building mapping, GIS and built environment applications. Giraffe provides app developers a platform with these key built in features:
Data persistence, permission management and security
Map / 3D model visualisation and UI
Extensive professional grade drawing tools / CAD
A fully featured data model and UI
These plus many other tools and features allow developers to focus on their specific Application logic.
Combining this with bespoke frontend/client application logic and algorithms means that powerful custom applications can be deployed very easily. All that is required is a basic server or service that serves static html and javascript files. There are dozens of providers that do this for free, including:
Backend Services
Some applications require capabilities that require a fully featured backend. For example:
Security/authentication requirements outside of those provided by Giraffe
Advanced GIS services:
tile servers
performing queries on large datasets using a backend database
AI workloads that can’t run in the a browser due to language or performance constraints
Software written in languages that cannot run in the browser
While there are also dozens of cloud providers that offer a wide variety of backend services, we recommend that Apps are developed using a machine that users have full control over. For the proof of concept phase (and beyond) this offers several benefits:
No tie in to a particular vendor’s solutions during development, which in turn means:
No need to learn the particular prices, offerings and tools of each vendor.
Greater control over what hardware/OS/software is used.
Develop expertise for the hardware and software that you own and use every day.
Less of a difference between development and production environments
Much better bang for your buck & no risk of cost blowouts
An Example App
We will go through the steps to create an Application with a fully fledged backend that can run on a server (either physical or virtual).
Example Repository
We have created an example repository which has all the boilerplate required for an application with frontend code and a dynamic backend API.
In our example, the Python backend runs in 2 Docker containers, but it doesn’t need to use Docker at all. If the application logic doesn’t work well in a docker container (eg. it needs direct access to the GPU or other resources on the host machine), that part of the application can be run outside of a container while leaving the NGINX server to run in a docker container.
⚠️Always use a production ready web server such as NGINX or Apache before allowing access to your machine from the public internet.
Components
The example application is build around Python. Even for a simple application we need:
Web server (we have used NGINX)
WSGI (we have used gunicorn)
Web Framework (we have used Flask)
Frontend framework for bundling the frontend SDK code (we have used Vite & React)
Docker to run the server
We use Docker containers for the NGINX server and our Python backend.
From boilerplate to something useful
Our example demonstrates a full stack application with our frontend code communicating with our Python server via API. It doesn’t do anything very interesting though. In this next step we will create an app that uses AI to segment aerial imagery (or other maps) sent from Giraffe.
Publishing an to the web
We recommend strongly against running this on a device that would cause a security issue if it was compromised. While we follow best practises for security, exposing a machine to the public internet comes with risks - especially if you are doing it for the first time! Many of these risks can be entirely avoided by not storing sensitive information on the web server.
Public IP Address
To allow the app to be accessible from anywhere, we are going to connect the server to the internet via a Cloudflare Tunnel. This is a fantastic, underrated (and free!) product which works as follows.
This means that any machine with a consistent internet connection can be used as a server (and accessed from anywhere via ssh!). It can be located anywhere, be it home, office, datacenter or cloud.

