Skip to content

mgsrevolver/deja-view

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Deja View

Transform your Google Location History into an enriched, browseable journal with place details, weather data, distance analytics, and more.

Deja View - You've been here before. Browse your entire location history as an interactive, time-traveling journal.

Features

  • Interactive Map - Dark-themed map with visit markers, travel paths, and weather mood overlay
  • Timeline Sidebar - Chronological list of places with photos, durations, and visit history
  • Place Enrichment - Automatically resolve place names, addresses, and photos via Google Places
  • Weather Data - Historical weather conditions displayed for each day
  • Distance Analytics - Track walking, cycling, driving, and transit distances
  • Calendar Navigation - Browse any day in your location history
  • Share Image - Generate Instagram-style Polaroid collage of your day
  • Authentication - Secure multi-user support with Supabase Auth
  • Fast Import - Drag-and-drop import of 18k+ visits in ~15 seconds

Screenshots

Coming soon

Quick Start

# Clone and install
git clone https://github.com/mgsrevolver/deja-view.git
cd deja-view

# Install backend dependencies
cd backend && npm install

# Set up environment (copy and edit with your Supabase credentials)
cp .env.example .env

# Run database migrations
npx prisma db push

# Start backend
npm run dev

# In another terminal - install and start frontend
cd ../frontend && npm install && npm run dev

# Open http://localhost:5173

Mapbox Setup

The map requires a free Mapbox account:

  1. Create account at mapbox.com
  2. Copy your default public token (starts with pk.)
  3. Add to frontend/.env.local:
    VITE_MAPBOX_TOKEN=pk.eyJ1Ijoi...

Import Your Data

  1. Export your location history from Google Takeout
    • Select only "Location History"
    • Choose JSON format
  2. Run the import:
    node scripts/import-google-takeout.js ~/Downloads/Records.json

Enrich Places (Optional)

To resolve place names and addresses:

cd backend

# Check how many places need enrichment
node scripts/enrich-places.js --dry-run

# Enrich with Google Places API (requires API key in .env)
node scripts/enrich-places.js

Project Structure

├── frontend/          # React + Vite app
│   └── src/
│       └── components/
│           ├── JournalView.jsx
│           ├── MapPane.jsx
│           ├── Sidebar.jsx
│           └── ...
├── backend/           # Node.js + Express + Prisma
│   ├── src/
│   │   ├── server.js
│   │   └── services/
│   │       ├── location-import.js
│   │       └── place-enrichment.js
│   └── scripts/
│       └── enrich-places.js
└── scripts/           # CLI tools
    └── import-google-takeout.js

Tech Stack

  • Frontend: React 19, Vite, React Query, Mapbox GL JS, date-fns
  • Backend: Node.js, Express, Prisma
  • Database: PostgreSQL (Supabase)
  • APIs: Google Places, Open-Meteo (weather)

Roadmap

  • Google Takeout import (all 4 formats)
  • Interactive map with visit markers
  • Timeline sidebar with visit cards
  • Calendar navigation
  • Distance analytics by activity type
  • Google Places enrichment
  • Weather data enrichment
  • User authentication
  • Shareable day image export
  • OSM Nominatim fallback (free tier)
  • Spotify integration
  • Google Photos integration

License

MIT

Contributing

Contributions welcome! See PROJECT-STATUS.md for current status and next steps.

About

Transform your Google Location History into an enriched, browseable journal with place details, weather data, distance analytics, and more.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors