Graybeard's Collectibles
The website of a comic and tabletop game shop in Stevensville, Montana, 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.
Graybeard's Collectibles is a comic and tabletop game shop in Stevensville, Montana. Its site says what the shop buys and sells, where it is and when it is open, and has pages for events, services, a gallery of new inventory, a short blog and one product listing.
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 keeps the old site's look, wording and page addresses. Until the shop'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. Parts of the old site that needed a server were replaced: the contact form became email and phone links, and the store's cart became a listing with a pickup note.
All wording lives in typed content files, so changing the hours or adding a blog post never touches layout code. The address is written once, and the header, footer, contact page and the structured data for search engines all read it from there.
The layout was measured, not redrawn. A script recorded the position and computed style of each visible element of the old pages at desktop and phone widths, and the stylesheets were written from those numbers. A second script lists how far each piece of text and each picture sits from where the old site had it.
Worth noting
- Less than a quarter of the download. At the October 2026 rebuild a phone fetched about 1.6 MB for the home page, against 7.2 MB on the old site. Every picture ships in three sizes, and the header logo alone had been 793 KB.
- Old links still work. Page addresses match the old site exactly, and the addresses of removed pages redirect.
- A build that refuses to publish breakage. After each build a check confirms that every page exists with its heading, that every internal link and image resolves, and that each redirect is in place. A failed check stops the deploy.
- A browser smoke test. It opens every page at five screen sizes and reports errors, and it checks that the pages still read with JavaScript off.
- The video waits. The home page's embedded trailer loads only when a visitor scrolls near it.