Skip to main content

Architecture Overview

GeoPulse is designed with a modern, cloud-native architecture, leveraging robust and scalable technologies to provide efficient location tracking and insights. Below is a high-level overview of the main components and their roles.

Core Components

Backend

The backend is built using Java 25 and the Quarkus framework. It operates in Native mode, which provides extremely fast startup times and low memory consumption, making it ideal for cloud deployments and microservices architectures.

  • Background Jobs: Several background tasks, such as timeline processing and achievement calculations, are handled by the Quarkus Scheduler. These jobs are in-memory and are not persisted.

Database

PostGIS serves as the primary database, extending PostgreSQL with powerful geographic and spatial capabilities. This allows GeoPulse to efficiently store, query, and analyze location-based data.

Frontend

The user interface is developed with Vue.js 3. It utilizes PrimeVue components for a rich and interactive user experience, and Chart.js for rendering various data visualizations and trends.

Maps

Mapping functionalities are powered by Leaflet, a lightweight and open-source JavaScript library for mobile-friendly interactive maps. It integrates with OpenStreetMap for base map data, with the option to configure and use custom map tiles.

Deployment

GeoPulse is designed for flexible deployment across various environments:

  • Docker Compose: For local development and smaller-scale deployments, Docker Compose provides an easy way to set up and run all GeoPulse services.
  • Kubernetes (Helm Charts): For production-grade, scalable, and resilient deployments, official Helm Charts are provided to streamline deployment and management on Kubernetes clusters.

Optional Integrations

MQTT Broker

Mosquitto is an optional, lightweight open-source message broker that implements the MQTT protocol. It can be integrated with GeoPulse to support real-time location updates from devices using the OwnTracks MQTT integration.