Files
bookhoard/docs/developer/development.md
T
John O'Keefe a8f8c4def9 docs(ui): cookie-rendered sidebar state, data-collapsed CSS, working overview links + link-checker gate
Three problems, one root cause each:

1. Sidebar jump: the server rendered its own default (current section
   open, rest collapsed) and restoreDocsNav corrected it after paint —
   open-then-close. Fix: persistence moved server-side. toggleCollapsible
   now writes a docs_nav cookie (strictly-necessary UI state, no
   identifiers, SameSite=Lax); ApplyNavOverrides merges it into the nav
   before render, so first paint IS the visitor's state. The post-paint
   restore is deleted.

2. Arrows out of sync / double-click: two visibility mechanisms
   disagreed. There was NO data-collapsed CSS at all — collapsed sections
   were only ever hidden by JS after paint, and the arrow rotation came
   from a different (server) state. Now: style.css hides on
   [data-collapsed=true] (single source of truth, server-rendered),
   applyCollapsed sets only the attribute, arrows rotate from the same
   merged value. Live check: 37/37 collapsibles arrow-consistent.

3. api-reference.md links: all 20+ quick links were directory-style
   (authentication/ etc.) that 404 on the docs site, plus stale targets
   (books/, ../collections-api.md, websocket 'coming soon'). Rewritten to
   real per-file links — all 9 unique targets return 200 live. Same rot
   fixed in admin/hash-conflicts.md, development.md, android-app.md,
   create_media_item.md, koreader-protocol.md; docs/index.md redirected
   from the deleted collections-api monolith (stale 530-line duplicate of
   the gated api/collections docs — deleted, per the WO2 doctrine).

New gate: TestDocsRelativeLinks walks docs/developer/** and fails make
test on any relative link that is directory-style or unresolvable —
overview links can never silently rot again.
2026-10-24 20:20:07 -04:00

3.1 KiB

Developer Documentation

Welcome to the Bookhoard developer documentation. This section contains API references, protocol specifications, and technical documentation for integrating with Bookhoard.

📚 API Documentation

Complete API Reference

  • API Reference - Complete REST API reference
    • Authentication
    • User management
    • Libraries
    • Media items
    • Reading progress
    • Notes & highlights
    • Analytics
    • Book matching
    • OPDS
    • Sync protocols (KOReader, Kobo)
    • WebSocket

Split Endpoint Documentation

Browse individual endpoint documentation with interactive API Explorer:

Collections API

  • Collections API - Complete collections API reference
    • Create and manage collections
    • Auto-assign rules
    • Test rules
    • Bulk operations
    • Device shelf mappings

🔌 Protocol Specifications

Sync Protocols

WebSocket Protocol

  • WebSocket API - Real-time sync and events
    • Connection flow
    • Message format
    • Event types
    • Authentication

🛠 Implementation Guides

Library Visibility

  • Library Visibility - Per-user library visibility: the family-lens rule. New media endpoints MUST thread the visible-library set (helpers, SQL pattern, series per-library).

Calibre Integration

  • Calibre OPF Implementation - Technical implementation details
    • Architecture and design
    • Data structures and functions
    • Database schema mapping
    • Testing strategy
    • Error handling
    • Performance considerations

Looking for user documentation? See the User Portal Need to deploy? See the Operations Portal