Case study
Big Bluff Bay: poker events, honestly listed.
A calendar of live poker tournament series and league events around Australia, each linked to the organiser's own page. I rebuilt it in October 2026 as a small, fast site with no accounts and nothing to install.
- Rebuilt
- 14 October 2026
- Pages
- 22, built from one data file
- Feeds
- RSS and calendar (.ics)
- Accounts needed
- None
What it does
- Filter events by city, date, type, entry budget, guarantee and game format. The filters live in the address, so a search can be bookmarked or shared, and the back button works.
- Each event has its own page with the official link, add to calendar and share, plus directions once the venue is confirmed.
- Pages for each organiser, venue and tournament, plus city pages for the Gold Coast and Cairns.
- Save events in your browser and share your shortlist as a link. Subscribe to everything through RSS or a calendar feed.
- For newer players, a one-question hand decision prompt.
An unknown price is never "free"
Event data is messy. A missing entry price, a blank, a word where a number should be: a careless site turns any of those into "$0", and a player turns up expecting a free event. Here, only an explicit, valid price is ever shown or matched by the budget filter. Anything else is unknown, and shown as unknown.
A test runs the real page code against nine kinds of price, from missing to negative to text, and fails if any of them leaks through as free.
A daily check that reports, but never rewrites
Every morning, a scheduled check reads each organiser's page and, where the page publishes structured event data, compares it with the calendar: dates, venue, organiser, a cancelled or postponed status, the main event price and the guarantee. It also flags listings that are due to be checked again, sooner for events starting in the next month.
It never changes the calendar itself. Anything it finds goes into one running issue for me to review, updated each run and closed when everything matches. A wrong automatic "fix" would be worse than a stale listing.
Honest with search engines
- Event data for Google's rich results is only added when the venue is confirmed. Until then, the page is kept out of search.
- City pages with fewer than three events are kept out of search too, so nobody lands on a near-empty page.
- Listings expire on the Melbourne calendar date, not the server's.
Calendar files that just work
Calendar downloads are easy to get subtly wrong. Here, all-day events end on the following day, as the calendar standard requires, text is escaped properly, and every event keeps the same ID, so re-importing updates an event instead of duplicating it.
Small and locked down
A strict Content Security Policy allows no inline scripts or styles at all. The fonts are served from the site itself rather than Google Fonts. Contrast was raised, and form fields and tap targets were enlarged for phones.
What's next
The plan is to keep event discovery public and account-free, and see whether players come back for saved events, city filters and calendar downloads before adding sign-ups. If they ask for their saved events to sync, a free account would hold only an email address and what they've chosen.