ADR-0020: Switch to Zola for Documentation System
- Status:
- accepted
- Supersedes: ADR-0002: Use Docsify for Documentation System
- Date: 2024-02-20
- Tags: Documentation
Context
While Docsify has served our documentation needs, we’ve identified several limitations: *
- SEO capabilities are limited due to client-side rendering
- Performance is dependent on JavaScript execution
- Template customization options are restricted
- Page load times can be impacted by the single JavaScript parser
We need a documentation system that addresses these limitations while maintaining the benefits of our current system.
Decision
We will switch to Zola as our documentation system, replacing Docsify.
Rationale
Zola offers several advantages that align better with our current needs:
- Static site generation provides better SEO capabilities
- No JavaScript dependency for core functionality
- Flexible templating system using Tera
- Fast build times due to being written in Rust
- Direct rendering to HTML improves page load performance
- Maintains support for Markdown-based content
- Built-in syntax highlighting and search capabilities
Consequences
Positive
- Improved SEO through static HTML generation
- Better performance due to pre-rendered content
- More flexible templating and customization options
- No JavaScript requirement for core functionality
- Faster page loads
- Maintains Git-based workflow
- Syntax highlighting out of the box
- Built-in search functionality
- Clear separation between content and presentation
Negative
- Requires a build step (though builds are very fast)
- Team needs to learn Zola-specific templating syntax
- Migration effort required for existing documentation
- Need to set up build pipeline for documentation deployment
References
- ADR-0021: SPIKE Keeper as a Stateless Shard Holder
- ADR-0020: Switch to Zola for Documentation System
- ADR-0019: Plugin-Based Storage Backend Architecture
- ADR-0018: Administrative Access to SPIKE
- ADR-0017: Synchronous Persistence for SPIKE Secrets Store
- ADR-0016: Memory-First Secrets Store
- ADR-0015: Use Singular Form for File and Package Naming
- ADR-0014: Maintaining SQLite as SPIKE’s Primary Storage Backend
- ADR-0013: S3-Compatible Storage as SPIKE’s Backing Store
- ADR-0012: HTTP Methods for SPIKE API
- ADR-0011: PostgreSQL as SPIKE’s Backing Store
- ADR-0010: Session Token Storage Strategy for SPIKE Nexus
- ADR-0009: Multi-Administrator Support System
- ADR-0008: Administrative Access Control System
- ADR-0007: Root Key Lifecycle and Management Strategy
- ADR-0006: Trust Boundary Definition and Security Assumptions
- ADR-0005: Use SPIFFE mTLS for Inter-Component Authentication and Communication
- ADR-0004: SPIKE Keeper Minimalist Design Approach
- ADR-0003: Root Key Management and Storage Strategy
- ADR-0002: Use Docsify for Documentation System
- ADR-0001: Display Secrets in Plain Text in SPIKE Pilot Admin CLI