Add minimal, production-ready static HTML identity page as reference implementation for IndieAuth authentication. Includes: - Complete identity-page.html with h-card and IndieAuth endpoints - Architectural documentation and rationale - ADR-010: Static Identity Page decision record - Customization guide for users The example is zero-dependency, copy-paste ready, and guaranteed to work with IndieLogin.com and StarPunk. Pre-configured for thesatelliteoflove.com as working example. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
4.6 KiB
4.6 KiB
ADR-010: Static HTML Identity Pages for IndieAuth
Status
Accepted
Context
Users need a way to establish their identity on the web for IndieAuth authentication. This identity page serves as the authoritative source for:
- Discovering authentication endpoints
- Providing identity information (h-card)
- Establishing social proof through rel="me" links
The challenge is creating something that:
- Works immediately without any server-side code
- Has zero dependencies
- Can be hosted anywhere (static hosting, GitHub Pages, etc.)
- Is simple enough for non-technical users to customize
Decision
We will provide a single, self-contained HTML file that serves as a complete IndieAuth identity page with:
- No external dependencies - Everything needed is in one file
- No JavaScript - Pure HTML with optional inline CSS
- Public IndieAuth endpoints - Use indieauth.com's free service
- Comprehensive documentation - Comments explaining every section
- Minimal but complete - Only what's required, nothing more
Rationale
Why Static HTML?
- Maximum Portability: Can be hosted anywhere that serves HTML
- Zero Maintenance: No updates, no dependencies, no security patches
- Instant Setup: Upload one file and it works
- Educational: Users can read and understand the entire implementation
Why Use indieauth.com?
- Free and Reliable: Public service maintained by Aaron Parecki
- No Registration: Works for any domain immediately
- Standards Compliant: Reference implementation of IndieAuth
- Privacy Focused: Doesn't store user data
Why Inline Documentation?
- Self-Teaching: The file explains itself
- No External Docs: Everything needed is in the file
- Copy-Paste Friendly: Users can take what they need
- Reduces Errors: Instructions are right next to the code
Consequences
Positive
- Lowest Possible Barrier: Anyone who can edit HTML can use this
- Future Proof: HTML5 won't break backward compatibility
- Perfect for Examples: Ideal reference implementation
- No Lock-in: Users own their identity completely
- Immediate Testing: Can validate instantly with online tools
Negative
- Limited Functionality: Can't do dynamic content without JavaScript
- Manual Updates: Users must edit HTML directly
- No Analytics: Can't track usage without JavaScript
- Basic Styling: Limited to inline CSS for single-file approach
Mitigation
For users who need more functionality:
- Can progressively enhance with JavaScript
- Can move to server-side rendering later
- Can use as a template for dynamic generation
- Can extend with additional microformats
Alternatives Considered
1. JavaScript-Based Solution
Rejected because:
- Adds complexity and dependencies
- Requires ongoing maintenance
- Can break with browser updates
- Not necessary for core functionality
2. Server-Side Generation
Rejected because:
- Requires server infrastructure
- Increases hosting complexity
- Not portable across platforms
- Overkill for static identity data
3. External Stylesheet
Rejected because:
- Creates a dependency
- Can break if CSS file is moved
- Increases HTTP requests
- Inline CSS is small enough to not matter
4. Using Multiple Files
Rejected because:
- Complicates deployment
- Increases chance of errors
- Makes sharing/copying harder
- Benefits don't outweigh complexity
Implementation Notes
The reference implementation (/docs/examples/identity-page.html) includes:
- Complete HTML5 structure with semantic markup
- All required IndieAuth elements properly configured
- h-card microformat with required and optional properties
- Inline CSS for basic but pleasant styling
- Extensive comments explaining each section
- Testing instructions embedded in HTML comments
- Common pitfalls documented inline
Testing Strategy
Users should test their identity page with:
- https://indielogin.com/ - Full authentication flow
- https://indiewebify.me/ - h-card validation
- W3C Validator - HTML5 compliance
- Real authentication - Sign in to an IndieWeb service
Security Considerations
- HTTPS Only: Page must be served over HTTPS
- No Secrets: Everything in the file is public
- No JavaScript: Eliminates XSS vulnerabilities
- No External Resources: No CSRF or resource injection risks