Open source · 2026

trip-recap

Metadata-driven road-trip reconstruction and recap generation.

Free · Open source
  • Python

A FastAPI app that extracts capture times and GPS metadata from photos and videos, builds chronological trip observations, infers road routes, previews the result on a map, and can render a vertical MP4 with Playwright and FFmpeg. Missing metadata stays explicit, and uploaded media plus derived route data expire by default.

Questions

Is trip-recap free?

Yes. trip-recap is free to use and open source. The full source code is on GitHub at https://github.com/kshitizwagle/trip-recap.

How do I get trip-recap?

Get the source from https://github.com/kshitizwagle/trip-recap; the README there covers installation and usage.

Is there a warranty or support for trip-recap?

No. trip-recap was built with AI assistance and is provided as is, without warranty. Kshitiz Wagle is not liable for damage or loss. Use it at your own risk.

Who makes trip-recap?

trip-recap is built and maintained by Kshitiz Wagle, a software engineer in Lalitpur, Nepal. Portfolio: https://kshitizwagle.com.np.

README

Turn original photos and videos into a route preview and vertical MP4 using capture times and GPS metadata. Missing metadata stays explicit; roads between observations are inferred.

  • frontend/: Next.js static export with Astryx, Sonner, and MapLibre, deployed to Cloudflare Pages.
  • backend/: FastAPI metadata, routing, timeline, media, and rendering API, deployed on your home server.
  • compose.yaml: backend-only deployment, including ExifTool, Chromium, and FFmpeg.

See deployment instructions for Cloudflare Pages settings, API URLs, CORS, Docker, local development, and verification commands.

Uploads, discard, location autocomplete, route controls, playback, and MP4 export use the backend API. No login is required. Source media and derived GPS data are temporary by default; see PRIVACY.md.

Backend limits can be configured using TRIP_RECAP_MAX_FILES (100), TRIP_RECAP_MAX_FILE_BYTES (hard maximum 25 MiB), TRIP_RECAP_DATA_TTL_SECONDS (3600), TRIP_RECAP_ROUTE_TIMEOUT_SECONDS (20), TRIP_RECAP_ROUTE_ATTEMPTS (3), TRIP_RECAP_MIN_ROUTE_POINT_DISTANCE_METERS (50), TRIP_RECAP_RENDER_MAX_SECONDS (90), and TRIP_RECAP_RENDER_FPS (30). TRIP_RECAP_DATA_DIR defaults to /tmp/trip-recap; CHROMIUM_PATH can select a browser.

← All projectsSource on GitHub ↗