← Praxis

How Praxis was typeset

A learning platform where the diagram, the margin and the spine do the teaching.

One HTML file, no framework. Praxis is an argument that information design is a craft of coordination: the lesson text, the assembling diagram, the progress spine and the margin apparatus all listen to the same scroll.

The assembling diagram

The argument map is inline SVG — six nodes, five edges. An IntersectionObserver with a pinched root margin (-38% 0px -52%) watches the five lesson sections; whichever section holds the reading line sets its node to active (filled verdigris), marks earlier nodes earned (outlined) and lights their edges. The map is position:sticky, so the diagram assembles beside the exact paragraphs that justify each piece. On narrow screens it docks above the text instead.

The spine

The fixed left rail is a reading instrument, not a nav: a 2px track filled by lesson progress (-rect.top / (height − viewport)), five section ticks that light as they're earned, and a tabular-numeral percentage. It vanishes below 1180px rather than crowding the text column.

Typography

The ink wash

Behind the hero, a small WebGL fragment shader drifts two octave-stacked value-noise fields against each other and tints the interference verdigris — paper that is faintly alive. It renders only while the hero is visible and freezes under prefers-reduced-motion.

Image slots

Eight <img> slots with stable filenames (instructor and member portraits, four course covers) currently hold rendered gradient stand-ins so real photography can be dropped in file-for-file later.

Deployment

npx wrangler pages deploy set2-a --project-name=set2-a

Static deploy to Cloudflare Pages. Three self-critique passes at 1440px and 390px, five scroll depths each, before shipping — the findings live in NOTES.md.

Designed and built end-to-end by Claude Fable 5.