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.
| Technology | Installed | Job |
|---|---|---|
| Astro | 7.2.3 | Static page generation, routing, layouts, and content collections |
| Vite | 8.2.1 | Development server and production asset bundling |
| React | 19.2.8 | Interactive calculators, navigation, search, and live meeting controls |
| React DOM | 19.2.8 | Browser rendering for hydrated React islands |
| Tailwind CSS | 4.3.3 | Design tokens, responsive layout, and component styling |
| TypeScript | 7.0.2 | Types for components, content data, and build tools |
| MiniSearch | 7.2.0 | Browser-side full-text search over a static build-time index |
| Radix UI | 1.6.7 | Accessible behavior for selected interface primitives |
| Lucide React | 1.32.0 | Interface 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.
- 01
Source
Markdown and MDX content, Astro pages, meeting data, and components
- 02
Astro build
Renders routes to HTML and writes optimized assets
- 03
Search index
Astro serializes the guide into one static MiniSearch index
- 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 frontmattersrc/pages/route templatessrc/layouts/page shellssrc/components/interface and toolssrc/data/meeting datascripts/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.