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.
- 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
Coming soon
# 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:5173The map requires a free Mapbox account:
- Create account at mapbox.com
- Copy your default public token (starts with
pk.) - Add to
frontend/.env.local:VITE_MAPBOX_TOKEN=pk.eyJ1Ijoi...
- Export your location history from Google Takeout
- Select only "Location History"
- Choose JSON format
- Run the import:
node scripts/import-google-takeout.js ~/Downloads/Records.json
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├── 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
- 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)
- 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
MIT
Contributions welcome! See PROJECT-STATUS.md for current status and next steps.