Beacon is a platform for real-time location sharing and geofencing, built using a microservices architecture with scalability in mind.
It is primarily intended for use between closed groups of users with mobile devices.
Partially inspired by Apple's Find My & Google's Find Hub.
- Real-time location sharing between users
- Live map streaming
- Geofencing notifications
- Scalable microservices architecture
- Mobile client with iOS (and partial Android) support.
- Metrics collection via Prometheus & Grafana
- Log collection via Loki
- Event-driven messaging with Kafka
To achieve scalability and modularity, Beacon is built using a microservices architecture. Visit the Architecture Docs for more details.
Also check out the Benchmarks Docs to see how the platform behaves under scale.
Check the Mobile Client Docs for instructions on how to set up and run the mobile client.
To quickly start all backend services using Docker Compose, use docker-compose in combination with profiles:
docker-compose --profile services --profile deps up -dThis will start all backend services along with their dependencies (databases, caches & the message broker).
To enable orchestration and log collection, add the orchestration profile:
docker-compose --profile services --profile deps --profile orchestration up -dThis will start a Prometheus instance for metrics collection, a Grafana instance for metrics visualization, and Loki for log collection.
Contributions are welcome! Please read the Contributing Guide for details on how to get started.
This project is licensed under the MIT License - see the LICENSE file for details.