docs: add interactive documentation system with Go+HTMX

- Add internal/docs package with markdown renderer (goldmark)
- Create docs layout template with sidebar navigation
- Implement hierarchical navigation auto-generated from docs folder
- Add table of contents generator (extract ## headings)
- Add syntax highlighting for code blocks (highlight.js)
- Add mobile responsive design
- Add /docs routes to main.go

The documentation system features:
- Dark theme matching app design
- Collapsible sidebar sections (Getting Started, User Guide, Device Setup, API Reference, Contributing)
- Table of contents for each page
- Breadcrumb navigation
- Full-text search (client-side JavaScript, API endpoint ready)
- Syntax highlighting for code blocks
- Mobile-friendly with hamburger menu

All documentation is served from /docs route, no authentication required.
Markdown files are rendered using goldmark with GFM extensions and syntax highlighting.
This commit is contained in:
2026-02-01 18:33:55 -05:00
parent 555bd0df15
commit 5c7137feb8
9 changed files with 1439 additions and 0 deletions
+7
View File
@@ -3,6 +3,7 @@ package main
import (
"bookhoard/internal/config"
"bookhoard/internal/database"
"bookhoard/internal/docs"
"bookhoard/internal/handlers"
"bookhoard/internal/middleware"
ratelimit "bookhoard/internal/middleware"
@@ -601,6 +602,12 @@ func main() {
return c.HTML(http.StatusOK, buf.String())
})
// Documentation routes (no authentication required)
docsHandler := docs.NewHTTPHandler("docs")
e.GET("/docs", docsHandler.DocsHome)
e.GET("/docs/*", docsHandler.ShowDocumentation)
e.GET("/docs/api/search", docsHandler.Search)
// Start server
log.Printf("Starting server on port %s", cfg.ServerPort)
e.Logger.Fatal(e.Start(":" + cfg.ServerPort))