A live restaurant website and an offline-first ordering system for a Mexican restaurant & bar in Gould, Colorado — high in North Park at the foot of Cameron Pass, where most customers have no cell service. The menu caches on-device, orders queue in an on-device outbox, and when data can't get through, one tap sends the order as a text message.
Live now at howlingcoyote.bar
The Howling Coyote sits on Highway 14 at Cameron Pass, in one of the emptiest corners of Colorado's North Park. It's the kind of place people find on a road trip, at a campground, or coming off the trail — and it's also a place where cell service simply doesn't exist. A normal "order online" flow, the kind that assumes a live connection at checkout, falls apart the moment a customer is standing in a dead zone with a hungry car full of people.
The restaurant itself isn't much better connected: it runs on Starlink behind carrier-grade NAT, so anything that expects a fixed public address or a rock-solid uplink is a bad bet. The brief was simple to say and hard to build: let people order even when the network is against them.
Two things, as one TypeScript codebase. First, the site that's live today — a warm, fast marketing site with the menu, the bar, delivery info, events, and hours. Second, the part being finished now: an offline-first ordering system — a customer PWA, a kitchen dashboard, and an API server — engineered from the ground up to survive no signal.
Menu & app precache on-device on the first visit.
Orders commit to a local outbox — instantly, offline.
Idempotent ULID retries fire on any signal blip.
No data at all? One tap sends it as an SMS instead.
The engineering discipline is that the network is treated as optional, not assumed. Pricing, hours, and the SMS grammar all live in a shared, unit-tested package that runs identically on the phone and on the server — so an order totals the same whether it's placed online or reconstructed from a text message.
The core loop — menu → cart → checkout → live dashboard → status texts — is done. Finishing now: Workbox precache polish and an on-device iPhone field test out at the pass. On the roadmap: a Stripe Payment Element (with pay-in-person staying as the offline fallback), a cloud-polling kitchen printer that works behind Starlink's CGNAT, full inbound SMS ordering, and onboarding the next North Park business onto the same multi-tenant platform.