The site uses a persistent global left sidebar for all navigation (visible at 1024px+, collapses to a hamburger drawer on mobile). The top navbar became a slim 52px topbar showing only the logo. All navigation — OAuth 2.0 spec sections, Reference, Learn, About — lives in the sidebar.
The homepage is a decision tree: "What are you trying to do?" with five entry points, each routing to a direct recommendation with links. No hero marketing text.
- CSS custom property system: color palette, type scale, font stacks
- Dark & Light mode system:
[data-theme="dark"], OS preference auto-detection, zero-flicker init, and topbar switcher - Bootstrap variables overridden at
:rootlevel so all components inherit the palette - System UI font stack (
-apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui) h1/h2in navy primary,h3–h6in dark text- Dark navy topbar and navbar
- Inline
codestyling: navy text, light surface background, subtle border .rfc-badgepill for inline RFC number references (applied throughout/2/).rfcclass: monospace URL display for canonical RFC links on spec pages
- Slim topbar (52px): logo + hamburger toggle
- Global left sidebar (248px): sticky, scrollable, full site nav
- Mobile: sidebar slides in as a drawer with overlay
site-maincontent column with 800px max-width on inner containers
- All site sections in one place: Getting Started, OAuth 2.0, Reference, Learn, About
- OAuth 2.0 sub-sections in collapsible
<details>groups: Core Concepts, Grant Types, Tokens & Keys, Security, App Types, Discovery - PHP URL detection auto-opens the relevant section and highlights the active page
- "Legacy" badge on deprecated grant types (Implicit, Password)
- Five entry questions routing to recommendations:
- Add login → OpenID Connect
- Connect to third-party API → sub-question by app type (web/SPA/native/device)
- Protect my API → Bearer Tokens
- Service-to-service → Client Credentials
- Browse specs → OAuth 2.0 / Specs
- Back/restart navigation in the tree
- Popular Topics strip below the tree
nav_active()PHP helper highlights current section in the sidebar- Consistent breadcrumbs on all sub-pages
- Bootstrap 5 migration (dropped jQuery)
- Router script (
router.php) for PHP built-in server — fixes/2.1/routing
.spec-metabar: RFC badge + Published/Draft status pill.spec-lede: larger one-sentence summary.spec-when: left-accented callout for "When to use this"- Template applied to: PKCE, Authorization Code, Client Credentials
/security/rebuilt as a real hub: two featured RFC cards, Advisories, Workshops, Resources- RFC 6819 and RFC 9700 detail pages breadcrumb back through Security
- Low-quality external links removed
/getting-started/— "OAuth is not authentication" callout banner at top/2/— GNAP added to Related Work; duplicate FAPI removed; dead conditionals cleaned up/faq/— expanded from 1 to 12 questions across 4 sections, all answers written- About section — proper dropdown nav,
/about/redirects to Credits, flat-list breadcrumbs fixed - Footer — contribution prompt ("Edit this page on GitHub") on every page
A visual interactive graph of how OAuth specs relate to each other — which specs extend which, alternatives, deprecations, and things built on top. Scaffolded at /map/ but the actual graph is not yet built. Planned as a separate project.
Relationship types to model:
- Extends: PKCE → Authorization Code; DPoP → Bearer Tokens; PAR → Authorization Code
- Defines: RFC 6749 → Auth Code, Client Credentials, Implicit, Password
- Replaces/consolidates: OAuth 2.1 consolidates OAuth 2.0 + Security BCP
- Alternatives: DPoP as a more secure alternative to plain Bearer Tokens; mTLS as another alternative
- Built on: OpenID Connect, GNAP, FAPI, IPSIE, IndieAuth
- Deprecated: Implicit Flow, Password Grant
Implementation options:
- Static hand-crafted SVG (maintainable, no JS dependency)
- D3.js force-directed graph (interactive, but requires data upkeep)
- CSS/HTML positioned nodes (accessible, easy to maintain)
The spec template (.spec-meta, .spec-lede, .spec-when) was applied to PKCE, Authorization Code, and Client Credentials. The following pages would benefit from the same treatment:
- Device Code
- Bearer Tokens
- DPoP
- mTLS
- PAR
- Token Introspection / Revocation / Exchange
- Browser-Based Apps / Native Apps
- Search bar in the topbar
- "Prerequisites" and "Used by" cross-links on spec pages
- Print header (currently removed with old navbar — could add back to print.css)