Leisure World BBQ
The website of a small catering business: its menu, photos and contact details, built and maintained as a hobby, not for profit.
- Status
- Live
- Year
- 2026
- Kind
- small business site


What it is
This is one of the hobby sites I build and maintain for small businesses, not for profit. I am open to taking on more small businesses that need website work.
Leisure World BBQ is the website of Buccaneerz Catering & BBQ. It has two pages, the menu and a contact page, and is made for phones first. The menu is the owner's own, word for word: 27 dishes in four sections.
History
The site started in 2023 as one built by hand on Wix. The current version was rebuilt in 2026 with AI-assisted development. It is not a copy of the old one: it keeps the name, the photos and the contact details, and adds a new menu, a layout that fits any screen and a pirate theme. Until the business's domain is moved over, the new site is at a preview address.
How it's built
It is a static site: React and React Router, with every page rendered to HTML when the site is built, in TypeScript and plain CSS with no UI library. Cloudflare Workers serves the files, and there is no server code.
All wording lives in typed content files. The menu is a list of sections and dishes, and marking a dish as a favorite moves it to the top of its list on the page without reordering the file. Each photo's label is written once and used three times: on the photo, under it in the viewer, and as the text a screen reader reads.
There are two layouts, divided at 600 pixels. Below that the phone design scales with the screen. Above it nothing scales with the window, and the content sits in a column up to 1200 pixels wide. The home page prints as a two-column menu in dark text on white.
Worth noting
- Lighter than the old site. At the October 2026 rebuild the home page measured 939 KB in 33 requests on a phone, against 1,721 KB in 176 requests for the old one.
- A layout check at twelve widths. A script loads every page from 320 to 2560 pixels wide and fails if a page can be scrolled sideways or any text is under 14 pixels.
- A build that refuses to publish breakage. After each build a check confirms every page, link, image and old-address redirect, and a failed check stops the deploy. A separate browser smoke test opens every page at seven screen sizes, with JavaScript on and off.
- Contrast decided the background. Gold headings on the palest part of the map picture fell below the contrast text needs, so the map sits under a brown shade.
- A typeface was dropped for one letter. The first display face drew a capital M that read as "Ill", turning "Menu" into "Illenu".