Skip to content

Repository files navigation

⚠️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.

Luogo

A Simple & Secure Group Location Sharing App

Google Play badge App Store badge

3screenshots

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.


Features

  • 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.

Development

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 version

To build a production apk:

./flutterw build appbundle --flavor prod

Feel free to submit an issue or PR if you run into any issues. I'm here to collaborate and make the best app possible!

Architecture

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.

Etimology

Luogo is an Italian word for Place. Just thought it sounded nice (and no one had an app called that yet :p)

Acknowledgement

Th work is supported by a Sia Foundation grant.

About

Group location sharing app that prioritizes simplicity & privacy.

Resources

Stars

42 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages