Getting Started with the GeoFence

Contributors: Nick Poole
Favorited Favorite 5

Software Overview

The GeoFence Software is built and distributed using the Electron framework. We've made an executable installer for Windows 64-bit systems, so for the purposes of this guide, we'll assume you're running Windows. At the end of this section I'll briefly discuss how to get GeoFence running on different environments.

Before we get into the user interface, let's download and install the software. First of all, you'll need to download the executable installer:

When you launch the installer it will ask if you're sure you want to install GeoFence. Click "yes" to install the software which will auto-launch as soon as it's finished. Now you should see something that looks like this:

screenshot of the geofence software.

As you can see, GeoFence leverages the Google Maps API to make selecting geographic regions easier. If you can't see the map, you may not be connected to the internet. The GeoFence Software requires an active internet connection in order to retrieve maps from the Google Maps API. It will start in Boulder, CO by default but you can type any location into the search bar at the top to travel to that location.

There are four zones in the software corresponding to the four zones on the board. Each zone is color coded so that the boundaries will be easily distinguishable on the map. In the next section, we'll go over how to create zone boundaries and load them on your GeoFence board but for now, let's just break down the user interface:

screenshot of the geofence software with all of the UI elements labeled.


The map is where you can draw all of your zone boundaries. It's powered by Google Maps, so it should always be accurate and up-to-date.

Search Bar

If you want to jump to a location on the map, you can use the search bar to get there. Type a zip code, the name of a city or even a business name and press "Go" to jump to that location. the zoom level of the map is not adjusted when making a jump so you may need to zoom in to find your destination.

Status Bar

This is where the application will notify you of what's going on.

Zone Tools

The zone tools are how you'll be defining your zone boundaries. There are four zones with four functions each:

  • Edit Zone - Pressing this button puts the corresponding zone into edit mode. In edit mode, the zone's boundary will be marked with draggable anchors to change its size and position. Clicking the map will erase the current boundary and place a new one at the clicked location.
  • Delete Zone - This button will remove the corresponding zone from the map entirely.
  • Make Rectangular - This button will make the current zone rectangular.
  • Make Circular - This button will make the current zone circular.

Zone Boundary Coordinates

Whenever you create a zone boundary on the map, the coordinates for that boundary will be displayed here. This is the data that will be sent to the board.

Serial Tools

These controls are all for manipulating the serial port. From here you can scan for active serial ports, open a connection, close a connection and push your zone definitions to the GeoFence hardware.

Running GeoFence on Mac, Linux, Etc.

Because the GeoFence software is written essentially like a webpage and uses Node.js modules to interact with your computer's serial ports, it's totally cross-platform compatible. In order to run GeoFence from source code, you just need to install node.js, Electron and the serialport package for node. Once those things are all installed, open a terminal and navigate to the folder where you've downloaded the GeoFence source code then run "electron ."

If you find that the serial port doesn't work correctly, you may need to re-install it using the instructions found here or rebuild the serialport module to get it to work properly on your system. The utility that we used to package the app for Windows machines will also generate packages for Linux and OSX, so if you have experience with electron-builder and have successfully tested the serial module under one of these environments, please feel free to build an executable for your platform and send us a pull request!