type: decision
timestamp: 2026-06-20
tags: [architecture, stack, hosting, astro, tailwind]

Family stack lock — Astro 6 + React 19 islands + Tailwind v4 + pnpm + Biome

Same stack all sites. CF Pages monetised, GH Pages info-only

Family stack lock

Stack

LayerPickWhy
FrameworkAstro 6 (output: 'static')Zero JS by default, islands only where needed, fast builds, ecosystem mature
UI islandsReact 19Largest lib ecosystem (FFmpeg.wasm wrappers, PDF.js, react-pdf, OCR.js, etc.)
StylingTailwind v4Already-locked across family, dark theme tokens in @chirag127/theme
Package mgrpnpm 10Family-wide, content-addressable global store
LinterBiome 2One tool replaces eslint + prettier, faster CI
TSTypeScript 5.7+Strict, noUncheckedIndexedAccess, exactOptionalPropertyTypes

No Next.js, no SvelteKit, no Vue family-wide for new repos. Existing React-only Vite repos (extensions) keep their stack.

Hosting split

Driven by the user’s monetisation rule: the host where the money is made deserves the better SLA + bandwidth.

Site typePrimary hostWhy
Tool sites (15) — pdf, image, finance, dev, text, convert, qr, data, audio, video, seo, crypto, health, random, printCloudflare Pages onlyOn-page monetisation (AdSense, affiliate). Need unlimited bandwidth + lowest TTFB. NO GH Pages mirror — divided traffic dilutes ad RPM.
Catalog sites — books, ncert, cardsCloudflare PagesOn-page affiliate / ad monetisation. CF only.
Longform sites — blog, journal, meCloudflare PagesOn-page ads / affiliate. CF only.
Hub site — oriz-site (apex)Cloudflare PagesFront door of the brand. CF only.
Info / legal sites for products monetised elsewhere — extension landing pages, package landing pages, status, archived 301-redirect sitesGitHub PagesFree 100GB/mo bandwidth is plenty for traffic that’s already converted; no ads on the page; cheaper to run.

Cost ceiling

CF Pages free tier (per project, no card):

GH Pages free tier (per repo):

Per rules/never-hit-a-free-tier-quota.md: builds budget allows 500/30 ˜ 16 deploys per project per day. Over 15 tool sites that’s 240 deploys/day ceiling — more than enough since deploys are gated by main-branch pushes.

Tooling per site

Every Astro site ships:

(Decided 2026-06-20.)


Edit on GitHub · Back to index