Village on the Road
An invite-only map of traveling families, visible only as far as your trust graph reaches.
What It Does
I used to use Couchsurfing and miss the people I'd meet on the way. Now with two kids, I really wished there was a way I could meet up with like-minded people on the road easily and so I built Village on the Road. I also wanted to make it very trust-heavy so it's built on real networks: friends and friends of friends and you have to opt into the latter.
How it works
It's a website for now, no app required, nothing to download. It's invite-only. I invite my friends and we can see each other. If they opt-in, they can be seen by friends-of-friends too. No public discovery yet. You send requests to people within your trust network. For friends of friends there's an ask-for-an-introduction layer as well. The idea is to make trips way cooler by meeting other interesting families on the way, kids for the kids to play with, grown-ups to talk to. It's the best of Couchsurfing's meetups giving kids playdates and parents an interesting conversation and a moment's rest.
Built with
- Built with: Next.js 16 (App Router, React 19, TypeScript, Tailwind) over SQLite via Drizzle, with discovery gated by a pure, DB-free reachability pass over the directed trust graph — friend-of-a-friend visibility is computed in one testable function rather than scattered through queries — plus invite-token signup with cookie sessions, server-side photo processing (HEIC → downscaled WebP, EXIF/GPS stripped), and a react-map-gl / Mapbox GL web client.
- Ships as a single multi-stage Docker image (native better-sqlite3 compiled at build, migrations run idempotently on boot) onto a VPS behind Caddy, with the SQLite DB and photo directory in one bind-mounted volume; transactional mail through Resend, and node --test coverage on the trust/reachability core.