The journey starts before navigation

A person opening a food-truck map is not asking whether a database contains a coordinate. They are deciding whether to leave where they are and travel somewhere else. The interface turns a stored observation into advice. If the truck has paused service, moved, or stopped reporting, a visually convincing pin can still give the wrong advice. A short delay in the software becomes a wasted journey in the physical world.

That is why the public visit experience in Laff treats presence as a time-bounded contract. A public location needs a current publication, a valid service state and evidence recent enough to support the visit. The visual system follows that contract. A directions button is an outcome of the state calculation, not a permanent decoration attached to every truck profile. This is a small design decision with architectural consequences: the server, browser and operator actions must agree about what a live claim means.

There is more than one clock

An operator can publish a shift that remains open until a stated time. That does not make every location report during the shift trustworthy forever. A location can become stale before the shift ends. Laff's public visit deadline therefore considers both the publication's end and the allowed age of its location. The first boundary reached determines when the browser must reconsider the visit. This avoids the seductive mistake of treating a long-lived shift as permission to show an old position indefinitely.

The boundary also needs a precise definition. If a publication becomes invalid at a particular instant, the client should not wait for another click or page refresh to withdraw directions. The initial server result gives the browser a stable starting state. After hydration, the browser checks the clock and schedules the next relevant transition. A useful test is to load the page just before expiry, leave it untouched, and confirm that it changes without requiring the visitor to discover the problem themselves.

A published state has a beginning, a validity window and an expiry. The last known location is not a new confirmation.

Paused, offline and unconfirmed mean different things

A paused truck has expressed a service decision. An expired publication has crossed a time boundary. A failed refresh means the page could not confirm what is happening now. These situations may all remove navigation, but they should not be collapsed into one reassuring word. The distinction helps a customer make a decision and helps support understand the failure. In Laff's public state calculation, a refresh failure produces an unconfirmed state and no directions URL.

This is also why loading and failure states belong in the product specification. If a designer only draws the fresh happy path, the implementation will invent its own behavior when the network disappears. It may keep an old green badge because that is the easiest state to preserve. By designing the uncertain state explicitly, we make it possible for the interface to stay honest without becoming unusable: the person can still read the truck's profile and understand why a visit is no longer being recommended.

Keep one definition at the boundary

A website, native app and backend do not need identical rendering code. They do need a consistent meaning for a published location. That meaning belongs in documented contracts and carefully chosen tests. A marketing demo should not invent a second freshness policy because its animation looks better with a longer countdown. The interactive model accompanying this article uses an illustrative clock and clearly stated limits; the production source remains the authority for public visit behavior.

The most useful regression cases sit at boundaries: a paused publication that still has coordinates, a nominally live record with an old location, a refresh failure while the page is open, and the exact instant of expiry. They test a promise a customer can observe. They are more valuable than tests that merely create a record and read its fields back. If the promise changes, the tests should force that change to be discussed.

Freshness is a product decision

The general lesson extends beyond food trucks. Availability, inventory, appointments and equipment health all turn observations into decisions. Every system needs to answer how old the observation can be, who owns the current state, and what the interface does when it cannot confirm that state. Those answers cannot be delegated to a loading spinner. They are part of the service being offered.

A trustworthy interface sometimes removes an action. That can look less impressive in a static screenshot, but it is often the more thoughtful behavior. Our goal is not to make every state appear active. It is to make the available action correspond to what the system can currently justify. In a product that guides people through a real city, that distinction is part of the architecture.

Inspect the related simulation