Evgenii Burmakin c8242ce902 0.36.3 (#2013)
* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

* Pull only necessary data for map v2 points

* Feature/raw data archive (#2009)

* 0.36.2 (#2007)

* fix: move foreman to global gems to fix startup crash (#1971)

* Update exporting code to stream points data to file in batches to red… (#1980)

* Update exporting code to stream points data to file in batches to reduce memory usage

* Update changelog

* Update changelog

* Feature/maplibre frontend (#1953)

* Add a plan to use MapLibre GL JS for the frontend map rendering, replacing Leaflet

* Implement phase 1

* Phases 1-3 + part of 4

* Fix e2e tests

* Phase 6

* Implement fog of war

* Phase 7

* Next step: fix specs, phase 7 done

* Use our own map tiles

* Extract v2 map logic to separate manager classes

* Update settings panel on v2 map

* Update v2 e2e tests structure

* Reimplement location search in maps v2

* Update speed routes

* Implement visits and places creation in v2

* Fix last failing test

* Implement visits merging

* Fix a routes e2e test and simplify the routes layer styling.

* Extract js to modules from maps_v2_controller.js

* Implement area creation

* Fix spec problem

* Fix some e2e tests

* Implement live mode in v2 map

* Update icons and panel

* Extract some styles

* Remove unused file

* Start adding dark theme to popups on MapLibre maps

* Make popups respect dark theme

* Move v2 maps to maplibre namespace

* Update v2 references to maplibre

* Put place, area and visit info into side panel

* Update API to use safe settings config method

* Fix specs

* Fix method name to config in SafeSettings and update usages accordingly

* Add missing public files

* Add handling for real time points

* Fix remembering enabled/disabled layers of the v2 map

* Fix lots of e2e tests

* Add settings to select map version

* Use maps/v2 as main path for MapLibre maps

* Update routing

* Update live mode

* Update maplibre controller

* Update changelog

* Remove some console.log statements

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Remove esbuild scripts from package.json

* Remove sideEffects field from package.json

* Raw data archivation

* Add tests

* Fix tests

* Fix tests

* Update ExceptionReporter

* Add schedule to run raw data archival job monthly

* Change file structure for raw data archival feature

* Update changelog and version for raw data archival feature

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>

* Set raw_data to an empty hash instead of nil when archiving

* Fix storage configuration and file extraction

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation (#2018)

* Consider MIN_MINUTES_SPENT_IN_CITY during stats calculation

* Remove raw data from visited cities api endpoint

* Use user timezone to show dates on maps (#2020)

* Fix/pre epoch time (#2019)

* Use user timezone to show dates on maps

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Limit timestamps to valid range to prevent database errors when users enter pre-epoch dates.

* Fix tests failing due to new index on stats table

* Fix failing specs

* Update redis client configuration to support unix socket connection

* Update changelog

* Fix kml kmz import issues (#2023)

* Fix kml kmz import issues

* Refactor KML importer to improve readability and maintainability

* Implement moving points in map v2 and fix route rendering logic to ma… (#2027)

* Implement moving points in map v2 and fix route rendering logic to match map v1.

* Fix route spec

* fix(maplibre): update date format to ISO 8601 (#2029)

* Add verification step to raw data archival process (#2028)

* Add verification step to raw data archival process

* Add actual verification of raw data archives after creation, and only clear raw_data for verified archives.

* Fix failing specs

* Eliminate zip-bomb risk

* Fix potential memory leak in js

* Return .keep files

* Use Toast instead of alert for notifications

* Add help section to navbar dropdown

* Update changelog

* Remove raw_data_archival_job

* Ensure file is being closed properly after reading in Archivable concern

---------

Co-authored-by: Robin Tuszik <mail@robin.gg>
2025-12-14 12:05:59 +01:00
2025-12-14 12:05:59 +01:00
2025-12-14 12:05:59 +01:00
2025-12-14 12:05:59 +01:00
2025-12-06 20:54:49 +01:00
2025-12-14 12:05:59 +01:00
2025-12-14 12:05:59 +01:00
2025-12-06 20:54:49 +01:00
2025-12-14 12:05:59 +01:00
2025-12-06 20:54:49 +01:00
2025-12-06 20:54:49 +01:00
2025-12-14 12:05:59 +01:00
2025-12-14 12:05:59 +01:00
2025-12-14 12:05:59 +01:00
2025-12-14 12:05:59 +01:00
2025-12-06 20:54:49 +01:00
2025-12-06 20:54:49 +01:00
2025-12-14 12:05:59 +01:00

🌍 Dawarich: Your Self-Hostable Location History Tracker

Discord | ko-fi | Patreon


📸 Screenshots

Map Map View

Family Family Page

Stats Statistics Overview

Trips Trips page


🗺️ About Dawarich

If you're looking for Dawarich Cloud, where everything is managed for you, check out Dawarich Cloud.

Dawarich is a self-hostable web app designed to replace Google Timeline (aka Google Location History). It enables you to:

  • Track your location history.
  • Visualize your data on an interactive map.
  • Create trips and analyze your travel history.
  • Share your location with family members.
  • Integrate with photo management apps like Immich and Photoprism to visualize geotagged photos.
  • Import your location history from Google Maps Timeline, OwnTracks, GPX, GeoJSON and some other sources
  • Explore statistics like the number of countries and cities visited, total distance traveled, and more!

📄 Changelog: Find the latest updates here.

👩‍💻 Contribute: See CONTRIBUTING.md for how to contribute to Dawarich.

⚠️ Disclaimer

  • 💔 DO NOT UPDATE AUTOMATICALLY: Read release notes before updating. Automatic updates may break your setup.
  • 🛠️ Under active development: Expect frequent updates, bugs, and breaking changes.
  • Do not delete your original data after importing into Dawarich.
  • 📦 Backup before updates: Always backup your data before upgrading.
  • 🔄 Stay up-to-date: Make sure you're running the latest version for the best experience.
  • ⚠️ DO NOT USE PRODUCTION ENVIRONMENT: Dawarich is not yet ready for production.

🧭 Supported Location Tracking

You can track your location with the following apps:

Simply install one of the supported apps on your device and configure it to send location updates to your Dawarich instance.


🚀 How to Start Dawarich Locally

  1. Clone the repository.
  2. Run the following command to start the app:
    docker compose -f docker/docker-compose.yml up
    
  3. Access the app at http://localhost:3000.

⏹️ To stop the app, press Ctrl+C.

You can use default values or create a .env file based on .env.example to customize your setup.


🔧 How to Install Dawarich

🆕 Default Credentials

  • Username: demo@dawarich.app
  • Password: password Feel free to change them in the account settings.

📊 Features

🔍 Location Tracking

🗺️ Location History Visualization

  • View your historical data on a map with customizable layers:
    • Heatmap
    • Points
    • Lines between points
    • Fog of War

👪 Family Sharing

  • Share your location with family members.
  • View locations of family members on the map (with their consent).
  • Each family member can enable or disable location sharing individually.

🔵 Areas

  • Draw areas on the map so Dawarich could suggest your visits there.

📍 Visits (Beta)

  • Dawarich can suggest places you've visited and allow you to confirm or reject them.

📊 Statistics

  • Analyze your travel history: number of countries/cities visited, distance traveled, and time spent, broken down by year and month.

✈️ Trips

  • Create a trip to visualize your travels between two points in time. You'll be able to see the route, distance, and time spent, and also add notes to your trip. If you have Immich or Photoprism integration, you'll also be able to see photos from your trips!

📸 Integrations

  • Provide credentials for Immich or Photoprism (or both!) and Dawarich will automatically import geodata from your photos.
  • You'll also be able to visualize your photos on the map!

📥 Import Your Data

  • Import from various sources:
    • Google Maps Timeline
    • OwnTracks
    • Strava
    • Immich
    • GPX/GeoJSON files
    • Photos EXIF data

📤 Export Your Data

  • Export your data to GeoJSON or GPX formats.

📚 Guides and Tutorials

🛠️ More guides available in the Docs.


🛠️ Environment Variables

Check the documentation on the website for detailed information about environment variables and settings.


💫 Star History

As you could probably guess, I like statistics.

Star History Chart
Description
Self-hosted alternative to Google Location History (Google Maps Timeline)
Readme AGPL-3.0 46 MiB
Languages
Ruby 55.6%
JavaScript 33.8%
HTML 9.4%
CSS 1%
Shell 0.1%
Other 0.1%