← All posts

Creating Slack Tide

Slack Tide unfurl — "The Orcas ferry is full? We'll catch the opening."

Getting a car onto the Orcas Island ferry is a special kind of misery. In summer, every vehicle reservation on the Anacortes ↔ Orcas Island route shows full weeks out, and the only way to get a spot is to catch the exact moment someone cancels. That means refreshing the Washington State Ferries reservation site over and over, hoping to be the one who’s looking when a space opens.

Slack Tide solves that. It watches ferry availability for the route and emails you — and optionally texts you — the instant a full sailing frees up a vehicle reservation. Booking still happens on WSDOT; Slack Tide just tells you when to go book. It’s a friends-only tool, not a public product: access is a simple email allow-list, no passwords, no accounts.

“We’ll tell you the moment the water clears.”

Designed

Slack Tide has a deliberate, cohesive look — a deep-teal-and-cream palette with a Newsreader display serif — carried consistently from the sign-in screen to the sailings list to the link unfurl above. The whole thing started as a design mockup and stayed pixel-close through build.

The front door is intentionally frictionless. No password, no account — you enter your email, and if you’re on the allow-list, you’re in. The promise is stated plainly right on the gate: watch a full sailing and get alerted the instant it opens.

Slack Tide sign-in — "Never miss an open spot to Orcas."

The main screen is the sailings board: pick a direction and a day, and every sailing shows live availability — Open, Low, or Full — with a one-tap bell to start watching a full one. It refreshes on its own so what you’re looking at is always current.

Slack Tide sailings board — live availability with a watch bell on the full sailing

Built

The whole thing was designed, built, and deployed end-to-end with AI as the primary engineer — from the data-source spike through the pixel-perfect frontend to the production runbook.

Deployed

Slack Tide runs as a single Docker container behind a Cloudflare Tunnel. Shipping a change is one command: git push origin main builds the image on a self-hosted Mac Mini CI runner, pushes it to the registry, ships the compose file to the droplet, and rolls the container with a health check. SQLite lives on a persistent volume, so data survives every deploy.

The friends-only allow-list is managed inside the app itself — an admin adds or removes members from the UI, no SSH and no redeploy — and changes take effect on the next request.


Slack Tide is a private, friends-only tool — there’s no public sign-up. This writeup is here to show how it was designed, built, and deployed.

← All posts