⚠️ Luogo is beta software! I've done my best to build a functional app, but if you run into any issues please file an issue.
A Simple & Secure Group Location Sharing App
Luogo is a cross-platform mobile app that allows groups of people to easily share their location without it being sold. Fully open source, written in dart & go, and utilizing modern encryption tech. You no longer have to trust a large corporatoin with your data.
-
Cross Compatible: No more worrying about walled gardens. All of your friends can join regardless of platform. (iOS/Android)
-
Batteries Included: No configuration required to get started. (Though you still can configure your own relay server if you wish).
-
E2E Encrypted: Utilizes modern encryption to make sure no one can read your location data unless you want them to.
-
Groups: Granular group sharing so you can control who knows where you are.
-
One Time Send: If you just want someone to have your location once, just send it with the one time button! No need to constantly send updates.
To get started with local development do the following:
git clone --recursive https://github.com/lukehmcc/luogo.git # make sure to recuse submodules
# If you forgot to recurse and already cloned you can do this
# git submodule init && git submodule update
cd luogo/
./flutterw run --flavor dev # Make sure to run with the flutter wrapper so everyone is on the same flutter versionTo build a production apk:
./flutterw build appbundle --flavor prodFeel free to submit an issue or PR if you run into any issues. I'm here to collaborate and make the best app possible!
Backend: A single-binary Go relay server (SQLite-backed) routes encrypted location messages between group members over WebSockets. Group keys are shared out-of-band via QR invite codes, so the server only ever sees ciphertext. The client's location is grabbed from the geolocator, encrypted with XChaCha20-Poly1305 using the per-group key, and pushed through the relay. Clients resync from the server's per-group message log on reconnect, so everyone stays up to date.
Front End: Utilizes Flutter to handle cross-platform compling with a single codebase. Cubits are used to handle state and seperate out buisness logic from the UI. The state code can be found in lib/cubit and the UI code is in in lib/view.
Luogo is an Italian word for Place. Just thought it sounded nice (and no one had an app called that yet :p)
Th work is supported by a Sia Foundation grant.