// COLOPHON · BUILD NOTES
How this site is built.
Pattaya Gym Directory is a static, framework-free, AI-readable directory of every sport venue in Pattaya, Thailand. Here's the stack, the type, the schema, and the endpoints.
Type
- Display
- Inter Tight Variable · weights 400–900 · -0.04em tracking
- Mono / Labels
- JetBrains Mono · weights 400–500 · 0.06–0.12em tracking
- Body
- Inter Tight 400/500 · 1.6 line-height
- Hosting
- Google Fonts via
media="print" onloadnon-blocking swap
Palette
- Gold
- #ffb800 → #ffd84a → #b97e00
- Copper
- #ff7a3a (eyebrow labels)
- Canvas
- #050507 → #0a0a0d
- Text
- #f7f7f8 → rgba(228,228,232,.72) → rgba(150,150,156,.6)
- Hairlines
- rgba(255,255,255,.08) and .14
Stack
- Static HTML + CSS3 + vanilla JavaScript (no framework, no bundler, no JS framework dependencies)
- Build chain: Node.js (build.js → build-extras.js → build-discovery.js), ~4500 lines hand-rolled
- Content: YAML frontmatter + Markdown body, one file per venue (
venues/<id>.md) - Data: JS array literal in
data.js(158 venues, 15 categories) - Map: Leaflet.js with custom dark theme
- Analytics: Plausible (privacy-first, no cookies, instrumented with custom events)
- Hosting: Cloudflare Pages (auto-deploy from
mainbranch) - CI: GitHub Actions — npm validate + npm build + html-validate across 21 page types + Lighthouse CI
Schema
JSON-LD structured data on every page. Types in use:
LocalBusiness(with category-specific subtype:SportsClub,HealthClub,GolfCourse,SportsActivityLocation)BreadcrumbList,WebPage,WebSite,OrganizationFAQPageon venue + guide pagesItemListon category + area + guide pagesArticle+Speakableon guides (voice-assistant ready)CollectionPageon guides indexPlace,PostalAddress,GeoCoordinates,ContactPointOpeningHoursSpecificationparsed from human-readable strings
AI-readable endpoints
/llms.txt— curated content map for AI agents/api/venues.json— full directory, CC BY 4.0 licensed/api/categories.json— by sport/api/areas.json— by location/feed.json— JSON Feed 1.1/feed.xml— RSS 2.0 (+ 13 category + 6 area RSS feeds)/openapi.yaml— OpenAPI 3.1 typed schema/.well-known/ai-plugin.json— ChatGPT plugin manifest/sitemap.xml+ sitemap-index with 5 topical splits
Standards
- HTML5 · CSS3 (variable fonts,
prefers-reduced-motion,color-scheme: dark) - Schema.org JSON-LD 1.0
- Open Graph + Twitter Cards with
og:image:width/height/alt - RFC 9116 —
security.txt - JSON Feed 1.1
- OpenAPI 3.1
- llms.txt 0.1 — emerging AI-content standard
- Target: WCAG 2.1 AA
Editorial promise
Every venue is researched and source-cited from public information. No paid placements. No sponsored listings. No affiliate-only entries. Listings update when public facts change.
Credit
Designed, built and maintained by Pattaya Authority · Tim Paemi ★