github tess1o/geopulse 1.1.0
Release 1.1.0

latest release: 1.1.1
one day ago

Release 1.1.0

This release focuses on making GeoPulse more flexible and handling larger datasets during import data, properly managing transactions and fixes related to geocoding. We've added some neat new features and completely reworked how imports handle big files.

What's New

Custom Map Tiles

You can now bring your own map tiles! Want to use MapTiler, Mapbox, or any other tile provider? Just configure your custom tile URL in your profile settings. The default OpenStreetMap tiles are still there if you prefer them. See documentation here: https://github.com/tess1o/geopulse/blob/main/docs/CONFIGURATION.md#custom-map-tiles

GPX Export

Export your timeline data as GPX files. GeoPulse allows to export any trip or stay directly from your Timeline page - just do right click on any Trip or Stay in the Movement Timeline section and select "Export as GPX". Alternatively you can export to GPX on a regular Export page - for given timeframe export to a single GPX file or to ZIP with many GPX files inside (for each trip/stay or grouped by days).

Performance Overhaul

The import system got a complete rewrite. We've ditched the old "load everything into memory" approach for a proper streaming implementation:

  • GeoJSON imports now handle files up to 1.5GB without choking your server
  • Google Timeline imports got the same treatment - massive JSON files are no longer a problem
  • OwnTracks and GPX imports also stream data instead of loading everything at once
  • Large files (>100MB) are automatically written to disk during upload rather than sitting in memory
  • Memory usage stays constant regardless of file size (~20-40MB overhead)
  • Tested with an 950MB GeoJSON file and 500MB Google Timeline files.

Memory usage during big file validation and parsing + saving to DB
image

and

image

Under the Hood

  • Refactored export system into smaller, more maintainable services
  • Fixed some annoying transaction issues with geocoding cache
  • Added comprehensive E2E tests for the export/import workflow
  • Better error handling throughout the import pipeline
  • Temp files get cleaned up automatically (retention configurable, defaults to 24 hours)

Configuration

New environment variables you might care about:

# Import temp file settings
GEOPULSE_IMPORT_TEMP_DIRECTORY=/tmp/geopulse/imports
GEOPULSE_IMPORT_LARGE_FILE_THRESHOLD_MB=100
GEOPULSE_IMPORT_TEMP_FILE_RETENTION_HOURS=24

# Streaming batch sizes (tune if needed)
GEOPULSE_IMPORT_GEOJSON_STREAMING_BATCH_SIZE=500
GEOPULSE_IMPORT_OWNTRACKS_STREAMING_BATCH_SIZE=500

# Delay between requests to reverse geocoding provider (milliseconds):
GEOPULSE_GEOCODING_DELAY_MS=1000

Breaking Changes

None! Everything is backward compatible.

Migration Notes

The custom map tiles feature requires a database migration (V9.0.0) which adds a custom_map_tile_url column to the users table. Flyway will handle this automatically on startup, no actions are needed from users.

Don't miss a new geopulse release

NewReleases is sending notifications on new releases.