Your map. Your data. No lock-in.
A personal mapping application built on open-source Leaflet: a thin reader over your own GeoJSON files. Drop in places and a route, and the map draws itself — pins, labels, and an animated route — with an offline canvas grid when there is no network. A deterministic recorder then captures the running app to MP4, so the sample below is exactly what the recipe renders.
The map, as a GIF.
A share-ready GIF of the personal map build — rounded corners, seamless loop. The pins drop in, the route draws itself, and the whole thing works offline.
A map you actually own.
No subscription, no locked basemap, no export button. One folder of static files reads your data and draws the map — anywhere, forever.
Data in, map out
data/places.geojson renders as labelled pins; data/route.geojson becomes an animated route. Edit the files, reload, done.
Open-source basemap
OpenStreetMap tiles, CSS-inverted to the brand, over vendored Leaflet (MIT). Swap the tile URL or delete it entirely.
Offline grid layer
A canvas L.GridLayer overrides the tile pane, so the map still works with zero network.
Deterministic preview
A pure seek(t) hook lets the recorder render the same MP4 every run — no hand screen-captures.
From two GeoJSON files to a running map.
Plain HTML/CSS/JS — no bundler required. Open it from a static server, or run the Vite dev loop.
L.map() mounts on #map; the OSM tile layer is added and CSS-inverted into the obsidian palette.apply(t) is a pure function of a 0..1 clock — pins stagger in, the route draws, the camera eases. Same t, same frame.preview/record.py opens ?preview=1, seeks frame-by-frame, screenshots, and pipes the frames into ffmpeg → sample.mp4.The .md build guide.
You're getting a downloadable .md build file written for AI agents (and humans). It contains the full recipe, the exact dependencies, the run command, and every knob to tune — plus the finished sample video is embedded above so you can see exactly what it produces.
Chinchilla code build vs. rented map builders.
Most personal maps are somebody else's app with your pins rented inside it — a subscription, a locked basemap, and an export button. This build is the other thing: a folder of static files that reads your own GeoJSON, drawn by open-source Leaflet, and recorded into a sample video by code.
seek(t) hook renders the same MP4 every run.They're different tools. A hosted builder is fine for one afternoon of pins. This build is for a map you intend to keep, own, and point at your own data for years.
Get the Personal Map build.
Free download. Unlock the map-app-build.md guide with a short sponsor view — the same recipe that renders the video above. Paste it into any AI agent and it can rebuild, remix, and re-skin the effect for your own content.
399 units), capped at 60s