Departures
A self-owned replacement for TripIt — built after TripIt's API was closed to new accounts. Every flight, hotel, train and car booking lives as structured data I control, projected into three places: a calendar feed my phone subscribes to from anywhere, a native Home Assistant dashboard, and an installable "Departures" web app. 165 trips are archived back to 2012, and upcoming trips stay current on their own — forward nothing, enter nothing by hand.
The wiki is the single source of truth: each upcoming trip carries a machine-readable YAML block. A generator projects those into an authenticated iCal feed (absolute UTC instants, stable UIDs, validated against the same parser Home Assistant uses) and a slim JSON the HA integration polls. Nightly ingestion reads booking-confirmation emails over IMAP, extracts trip and segment data with a local Gemma model, updates the wiki, regenerates the feed, and sends a Telegram digest — no dependence on TripIt. A guard refuses to ever write an empty feed, so a dropped mount can't blank your calendar.
- Python
- iCal / RFC 5545
- PWA (service worker)
- Home Assistant integration
- Local LLM (Gemma)
- IMAP ingestion
- launchd
- Cloudflare Tunnel