Acts as a Bluetooth peripheral to interface with users and sign Proofs of Location
Switch branches/tags
Nothing to show
Clone or download
maryannxy Update
Legacy repo - no longer supported
Latest commit f20a877 Nov 20, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
keys Add keys/.gitignore Feb 17, 2018
.env.example Add .env file Mar 2, 2018
.gitignore Add .env file Mar 2, 2018
geo-node.js Rename Feb 18, 2018
package.json Add .env file Mar 2, 2018 Update Nov 20, 2018
token-service-characteristic.js Compatibility issues Feb 18, 2018
token-service.js Update uuids Feb 17, 2018
token-signer.js Add .env file Mar 2, 2018

Notice: This is a legacy repository and is no longer being supported.

If you have any questions or concerns, please contact XYO Network at Please feel free to visit our ongoing projects at Thank you!

Geo Node


The code for a Node (a trusted device).

The Node provides the following functionality:

  • Generate a private / public keypair, unique to each node
  • Initialize itself with the backend, signing with the private key
  • Act as a Bluetooth peripheral to receive verification requests from users. Sign messages using private key verifying presence of user at a certain timestamp.
  • Communicate messages to backend


  • npm
  • Node.js


Bleno - Act as Bluetooth peripheral

Web3 - Generate keypair

Getting Started

  1. Install requirements using npm install
  2. Create the .env file: cp .env.example .env
  3. Run using node geo-node


Connect to the Geo Node by running the Geo User Client on an iOS or Android device. Then, when in proximity of the device running Geo Node, the device will be discovered and you may connect to generate a signature.

Geo Node signs a message (using Web3) of the user's address, received via bluetooth, and the current timestamp in the form address|timestamp. Geo then sends the signature back to the user via bluetooth for the user to store.

Geo Node posts checkins to a Geo Server running at the url specified in the .env file. This can be a server run by the user running the Geo Node.