Turn a Polarsteps data export into a print-ready photo album.
Upload your Polarsteps ZIP and get a laid-out album - covers, overview page, maps, photo pages - that you can edit in the browser and export to PDF.
- Photo layout algorithm packs images into grids, with drag-and-drop reordering
- Upgrade low-resolution Polarsteps photos with originals from Google Photos
- GPS tracks classified into flights, hikes, drives, and walks - add map pages with satellite imagery and elevation profiles
- Videos in albums - scrub frame-by-frame to pick a poster image
- Full RTL and localization support (English and Hebrew)
- PDF export via headless Chromium
| Backend | Python 3.14, FastAPI, SQLAlchemy, Polars, Playwright, Pillow, ffmpeg |
| Frontend | Vue 3, TypeScript, Quasar, Mapbox GL JS |
| Database | PostgreSQL 18 |
| External APIs | Open-Meteo (elevations + weather), Mapbox (tiles + routing), Google Photos Picker (photo upgrade), OpenStreetMap Overpass (named peaks) |
Requires Docker with Compose.
git clone https://github.com/itay-raveh/wanderbound.git
cd wanderbound
cp .env.example .env
# Fill in the required values
docker compose up -dOpen http://localhost:5173.
For production, set DOMAIN and ENVIRONMENT=production in .env and run
docker compose -f compose.yml up -d.
The Compose stack runs the app, database, and frontend. Configure database and app data backups in your deployment infrastructure.
The backend stores upload and processing progress in shared storage and Postgres,
so multiple backend workers can serve the same user flow. All backend workers
must use the same DATA_FOLDER volume and database.
mise manages tool versions and all project commands. Install it, then:
mise run setup # Install deps, generate assets, run migrations
docker compose up db -d # Start Postgres
mise run dev:backend # FastAPI dev server
mise run dev:frontend # Vite dev serverRun mise tasks to see all available commands. Extra arguments pass
through - e.g., mise run test:backend -- -k test_auth.



