Help now

Site Architecture

The software, build pipeline, deployment targets, and design system behind quitting7oh.org.

Updated

quitting7oh.org is built as a static reference site. Pages arrive as complete HTML, while calculators, search, navigation, and live meeting details add browser code where they need it. The version labels below come from the installed lockfile and build configuration during each site build.

Rendering model

Static HTML first

Astro turns the guide into ordinary pages during the build. React runs only where a reader needs live state or a calculation.

Astro output
static
Server runtime
None required
Primary host
Cloudflare Pages
Second target
nginx container

Core stack

These are the installed versions in the current redesign build, not the broader version ranges in package.json.

TechnologyInstalledJob
Astro7.2.3Static page generation, routing, layouts, and content collections
Vite8.2.1Development server and production asset bundling
React19.2.8Interactive calculators, navigation, search, and live meeting controls
React DOM19.2.8Browser rendering for hydrated React islands
Tailwind CSS4.3.3Design tokens, responsive layout, and component styling
TypeScript7.0.2Types for components, content data, and build tools
MiniSearch7.2.0Browser-side full-text search over a static build-time index
Radix UI1.6.7Accessible behavior for selected interface primitives
Lucide React1.32.0Interface icon set

Static publishing path

The build produces one portable directory. Cloudflare Pages and the Docker image serve the same files without an Astro server, database, edge function, or application process.

  1. 01

    Source

    Markdown and MDX content, Astro pages, meeting data, and components

  2. 02

    Astro build

    Renders routes to HTML and writes optimized assets

  3. 03

    Search index

    Astro serializes the guide into one static MiniSearch index

  4. 04

    dist/

    Portable pages, assets, and search data with no application server

Public site

Cloudflare Pages serves dist/ from the edge.

Container image

nginx serves the same dist/ directory on port 8080.

The prebuild step copies the repository changelog into its public page. Astro then renders the site and serializes the content collection into a static MiniSearch index. The final dist/ directory contains the pages, search index, fonts, scripts, styles, and images.

Browser code

Most article reading needs no client framework. React is limited to controls that hold state, respond to local time, or perform a calculation.

Header and guide drawer

React

Loaded when the page loads for navigation, theme controls, and the mobile drawer

Search

React + MiniSearch

Lazy-loads a static index and runs every query inside the reader’s browser

Meetings

React

Calculates local time and live status from committed meeting data

Calculators

React

Runs taper and symptom calculations in the browser without sending entries to a server

Article navigation

React

Tracks the active section and exposes the mobile table of contents and back-to-top control

Theme selection runs before paint so light and dark mode do not flash between states. Meeting times and calculator entries remain in the reader’s browser. The site has no user account system or application database.

Design system

The redesign uses self-hosted variable fonts, a warm neutral palette, a burnt-clay accent, and a single icon family. Light and dark modes use separate tokens rather than a blanket color inversion.

Reading and interface type
Commissioner
5.3.0
Display type
STIX Two Text
5.3.0
Color
Burnt-clay accent with warm neutral surfaces
Light and dark tokens
Motion
Short transitions for drawers, state changes, and scroll navigation
Reduced-motion fallback
Components
Site-specific Astro and React components with selected Radix primitives
1.6.7

Keyboard focus, semantic landmarks, reduced-motion support, and minimum control sizes are part of the shared components. Long articles keep a reading measure, while schedules and calculators can use more width when the information needs it.

Build and repository map

The redesign builds with Node 24 and npm 12. Both deployment targets receive the same static dist/ directory, so neither needs the Astro project or a Node application server after the build.

Build and hosting versions

Redesign Node
26.8.1
Redesign npm
12.0.2
Build command
npm run build
Astro output
static
Published directory
dist/

Source map

  • src/content/ articles and frontmatter
  • src/pages/ route templates
  • src/layouts/ page shells
  • src/components/ interface and tools
  • src/data/ meeting data
  • scripts/ build-time automation

The source is public at GitHub. astro.config.mjs, package.json, Dockerfile, wrangler.toml, and the workflows under .github/workflows/ are the authoritative configuration files.

Spotted an error on this page? Edit it on GitHub ↗