How mahlernim/google-timeline-visualizer works
Timeline Visualizer turns an exported Google Timeline file into a configurable animated travel video, on Android and in a private iPhone web app. The main Android workflow imports route history into a local Travel Journal, selects a trip or date range, previews the map, then exports and catalogs an MP4. The graph also preserves documented trip recaps, presets, settings, reminders, and video-library actions. Sampled code confirms route projection, tile caching, export-service, and web entry-point behavior; other connections follow README capabilities and are shown conservatively.
Main entry points: MainActivity.kt Android app · main.ts iPhone web app · JournalRepository.kt Journal repository · VideoExportService.kt Export service
Components 28
App experience
- Android app
app/src/main/java/dev/mahlernim/timelinevisualizer/MainActivity.kt - iPhone web app
web/src/main.ts - Video settings
app/src/main/java/dev/mahlernim/timelinevisualizer/ui/SettingsViewModel.kt
Timeline and journal
- Timeline parser
app/src/main/java/dev/mahlernim/timelinevisualizer/data/TimelineParser.kt - Signal processing
app/src/main/java/dev/mahlernim/timelinevisualizer/data/RawSignalProcessor.kt - Journal import
app/src/main/java/dev/mahlernim/timelinevisualizer/journal/importer/TimelineJournalImportAdapter.kt - Journal repository
app/src/main/java/dev/mahlernim/timelinevisualizer/journal/JournalRepository.kt - Journal database
app/src/main/java/dev/mahlernim/timelinevisualizer/journal/JournalDatabase.kt - Route projection
app/src/main/java/dev/mahlernim/timelinevisualizer/journal/route/JournalRouteService.kt - Web import
web/src/import-client.ts
Journey design
- Trip detection
app/src/main/java/dev/mahlernim/timelinevisualizer/trips/TripDetector.kt - Trip store
app/src/main/java/dev/mahlernim/timelinevisualizer/trips/TripsStore.kt - Video presets
app/src/main/java/dev/mahlernim/timelinevisualizer/presets/PresetRepository.kt
Preview and export
- Journey animation
app/src/main/java/dev/mahlernim/timelinevisualizer/render/TimelineAnimation.kt - Map painter
app/src/main/java/dev/mahlernim/timelinevisualizer/render/TimelinePainter.kt - Map tile cache
app/src/main/java/dev/mahlernim/timelinevisualizer/data/TileRepository.kt - Export service
app/src/main/java/dev/mahlernim/timelinevisualizer/export/VideoExportService.kt - MP4 encoder
app/src/main/java/dev/mahlernim/timelinevisualizer/export/Mp4Exporter.kt - Web renderer
web/src/renderer.ts - Web video export
web/src/video.ts - Web tile cache
web/src/tile-cache.ts
Videos and integrations
- Video library
app/src/main/java/dev/mahlernim/timelinevisualizer/videos/VideoLibraryViewModel.kt - Generated media index
app/src/main/java/dev/mahlernim/timelinevisualizer/videos/GeneratedMediaRepository.kt - Journal reminders
app/src/main/java/dev/mahlernim/timelinevisualizer/journal/reminder/JournalReminderCoordinator.kt
Other components
- Traveler
- Timeline JSON
- Map tile service
- Android media storage
Connections 34
- Traveler → Android app: uses
- Timeline JSON → Android app: selects
- Android app → Timeline parser: imports
- Timeline parser → Signal processing: processes
- Android app → Journal import: imports into
- Journal import → Journal repository: adapts data
- Journal repository → Journal database: persists
- Android app → Journal repository: reads journal
- Android app → Route projection: requests route
- Route projection → Journal repository: reads observations
- Android app → Trip detection: finds trips
- Trip detection → Trip store: stores trips
- Android app → Video presets: manages presets
- Android app → Video settings: configures
- Android app → Journey animation: previews journey
- Journey animation → Map painter: draws frames
- Map painter → Map tile cache: loads tiles
- Map tile cache → Map tile service: fetches tiles
- Android app → Export service: starts export
- Export service → MP4 encoder: encodes video
- MP4 encoder → Map painter: renders frames
- Export service → Android media storage: saves MP4
- Android app → Video library: browses videos
- Video library → Generated media index: reads index
- Video library → Android media storage: plays or manages
- Android app → Journal reminders: coordinates
- Traveler → iPhone web app: uses
- iPhone web app → Web import: imports file
- Timeline JSON → iPhone web app: selects privately
- iPhone web app → Web renderer: previews journey
- Web renderer → Web tile cache: loads tiles
- Web tile cache → Map tile service: fetches tiles
- iPhone web app → Web video export: creates MP4
- Web video export → Traveler: shares or downloads