Tyler Crump CV (PDF, opens in a new tab)

Web app · live

Tabi

A group holiday budget and travel planner that I designed, built and deployed on my own. It's live, my friends are testing it right now on our trip to Japan, and anyone can try the demo trip.

Role
Solo developer
Front end
JavaScript, HTML, CSS, Leaflet
Back end
Node.js, Express 5, SQLite
Hosting
Render, with auto-deploys
Status
Live · in use on a group trip to Japan
Tabi's Plan screen on a phone: a day picker, what's next on the itinerary, the day's weather forecast and a map Tabi's Money screen on a phone: spending left today, pace against the trip budget, spending by category and shared costs converted from yen
The Plan and Money screens, from Tabi's public demo trip.

Tested on a real trip

My friends and I are using Tabi to plan and budget our trip to Japan as it happens, so it's being tested by real people on real days out, not just by my automated checks.

The newest feature is an AI assistant, built on the Anthropic SDK, that helps the group plan the trip and manage the budget from inside the app.

How it's built

  • An Express 5 API with routes split by feature, and a single SQLite database (Node's built-in node:sqlite), with schema changes kept in one place
  • A framework-free front end built from small helper functions, with Leaflet for maps
  • Installs to a phone's home screen, with a service worker for offline use and push notifications

Services and SDKs

  • OpenStreetMap (Nominatim and Overpass) for addresses and nearby places, and CARTO map tiles
  • Open-Meteo for weather, and Frankfurter for exchange rates
  • Email with nodemailer, push notifications with web-push
  • The Anthropic SDK for the AI assistant that helps plan and budget the trip

Testing and CI

  • npm run check runs my own test scripts, which test the API over HTTP and the screens in a real Chromium browser with Playwright
  • GitHub Actions runs the same checks on every pull request
  • Render redeploys automatically when main changes, and three daily database backups are kept