Built to be read.
Static HTML, no trackers, no ad slots. The typography is loud on purpose — this is editorial, not a template farm.
If the page feels unfinished, good: the scorecards are unfinished too.
Static HTML in cream and espresso, set in Fraunces and Inter, hosted on Cloudflare, built without a CMS, edited in a text editor, deployed with one git push.
01Typography
- Display
- Fraunces — variable weight 500–600, optical size 9–144. By Phaedra Charles, Undercase Type, 2020 (and steadily updated). Open source. Loaded from Google Fonts.
- Body
- Inter — weights 400, 500, 600. By Rasmus Andersson, 2017. Open source. Loaded from Google Fonts.
- Mono
- JetBrains Mono — weights 500, 600. By JetBrains, 2020. Open source. Loaded from Google Fonts.
- Fallbacks
- Source Serif Pro · Georgia · system-ui · IBM Plex Mono · ui-monospace. The page is fully readable if Google Fonts is blocked.
02Palette
- Cream (bg)
#FAF6F0— the paper.- Sand
#F2EBE0— section bands.- Paper
#FFFCF6— cards.- Espresso Orange
#D4763C— the single accent. Used for italics, hovers, ranks, accents.- Espresso Ink
#2C1810— display foreground.- Cocoa
#4A3528— body foreground.- Mocha
#7A6555— meta foreground.- Latte
#B5A696— subtle foreground.
Accent contrast is 4.8:1 on cream — passes WCAG AA for large text and UI. We do not set body in Espresso Orange.
03Code stack
- HTML
- Static, hand-written. No CMS. No framework. No client-side hydration.
- CSS
- One stylesheet, plain CSS. Custom properties, container queries, view transitions, prefers-reduced-motion / -data, focus-visible.
- JS
- Vanilla, ~17 KB unminified. Cmd+K, anchor links, reading progress, Web Share, install-prompt button, IntersectionObserver reveals, mobile drawer.
- Build
- Node ESM script that copies, validates JSON-LD, checks canonical consistency, walks internal links, generates the sitemap, and minifies.
node scripts/build.mjs. - Service worker
- Network-first for navigation, cache-first for assets, stale-while-revalidate for
/data/index.json. Precaches core pages and OG cards.
04Hosting & infrastructure
- Edge
- Cloudflare Pages — HTTP/2, HTTP/3, Brotli, automatic TLS, global anycast.
- DNS
- Cloudflare. HSTS preload eligible.
- Source
- GitHub repository, plain text in a Git history.
- CI
- GitHub Actions runs JSON-LD validation, build, Lighthouse desktop + mobile audits on every push.
- Analytics
- None. No Google Analytics, no third-party trackers. See /privacy.
05Editorial workflow
Cafes are visited anonymously, twice minimum, with paid bills. Scores are recorded on paper at a different cafe the same day, then transcribed into data/index.json at the end of each week. The site is rebuilt and pushed; Cloudflare deploys in under a minute. The full editorial method is on /standards.
07 Sister sites
Pattaya Coffee is one editorial property in the Pattaya Authority network — ten specialty guides plus the parent agency. Cross-links appear in the footer on every page; contextual mentions in guides and cafe entries point to sister sites where they help readers plan beyond coffee.
- Pattaya Authority — Parent agency
- TimPaemi — Founders' flagship
- Pattaya Restaurant Guide — Dining
- Pattaya Visa Help — Visa & legal
- Pattaya Gym — Fitness
- Pattaya School Guide — Education
- Pattaya Villa Stream — Media · streaming
- Pattaya Medical — Healthcare
- PattayaPets — Pets
- Pattaya Vehicle Rentals — Vehicle rentals
Canonical network copy: Press kit · llms.txt · Pattaya Authority · Coffee
06Standards & specifications
The site implements: PWA Manifest 2.0 with shortcuts, screenshots and share_target; OpenSearch 1.1; Atom 1.0 and RSS 2.0 feeds plus JSON Feed 1.1; Schema.org JSON-LD across NewsMediaOrganization, WebSite (with SearchAction), Person, CafeOrCoffeeShop, GeoCoordinates, OpeningHoursSpecification, HowTo, DefinedTermSet, TouristTrip, Speakable, Article, FAQPage, BreadcrumbList, and ItemList; hreflang en + x-default; Speculation Rules API; View Transitions API. Sitemap, robots.txt, security.txt, humans.txt, llms.txt, and a key file for IndexNow are all served.
07Inspirations
The editorial method owes a debt to Sprudge's anonymous reviewing convention, the New Yorker's house style for plural-voice editorial, the Michelin Guide's discipline (without its industry capture), the Information's no-ads pledge, and the IndieWeb principle that you should be able to read every site equally well in a dumb browser.
Last updated: .
Want to know more about a specific detail? Email info@pattaya-coffee.com.