Corner Bar Austin
A neighbourhood sports bar on South Lamar, in a building that used to be an oil-change station. The site leans all the way into that history — and its entire job is turning a "bar near me" search into someone walking through the door.
The brief
Local bars lose customers in the gap between the search and the door. Someone types "sports bar open now south lamar" at 9pm on a Saturday, gets a Yelp page and a Facebook listing with hours that may or may not be current, and picks whichever place answers the question fastest. The site had to answer that question faster than anyone else — and it had to stay accurate without the owner calling a developer every time happy hour moves.
What we built
Five hand-coded pages, each self-contained, with all copy and business data held in a single JSON block at the top of the document. The home page runs hero → about → drinks → food → game day → photos → table request → visit → FAQ, and four further pages target the specific high-intent searches this bar can actually win.
- A live open/closed indicator computed in the bar's own timezone rather than the visitor's — the difference between "we're open" and a wrong answer for anyone travelling.
- A table-request form with real client-side validation, so a fumbled phone number gets caught before it becomes a booking that never happens.
- An owner control panel — a second self-contained page, deliberately noindexed, where the owner edits hours, happy hour, the tap list and events without touching code.
- Structured data for the business, its menu and its FAQ, so search engines can render hours, location and answers directly in results.
- A pre-deploy checker (
node scripts/check.mjs) that has to exit clean: NAP consistency across every page, structured-data validity, link integrity and a page-weight budget.
Two things we deliberately left out
No review-star markup. It is tempting to stamp a 4.8 rating into the search result — Google treats self-serving review markup on a business's own site as a violation, and the penalty lands on the client, not the developer. The ratings live in the page as plain, attributed text instead.
No invented facts. Every business detail on the site was confirmed across at least two independent sources before it shipped. The handful that couldn't be — exact map coordinates, the current tap list, parking specifics — are flagged in the handoff for the owner to confirm rather than quietly guessed. A wrong address on a bar's website costs a customer permanently.
Status
The build is complete and passes its own pre-deploy checklist. It is with the owner for review and is not yet serving at the bar's domain, which is why there's no live link on this page — we don't publish a client's site as "live" before the client has said so.