Implement Phase 8: Web UI with htmx templates

- HTML templates: layout, login, notebook list, notebook view, page viewer
- Web server with chi router, embedded templates via //go:embed
- Login/logout flow with session cookies
- Notebook list, page grid with SVG thumbnails, page viewer
- Share link views (same templates, no auth chrome)
- Server command wired to start gRPC + REST + web servers concurrently
- Graceful shutdown on SIGINT/SIGTERM

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-24 19:59:07 -07:00
parent fedb5e3301
commit 5c4575a67f
9 changed files with 447 additions and 0 deletions

13
web/templates/page.html Normal file
View File

@@ -0,0 +1,13 @@
{{define "title"}}Page {{.PageNumber}} — {{.NotebookTitle}} — Engineering Pad{{end}}
{{define "content"}}
<h1>{{.NotebookTitle}} — Page {{.PageNumber}}</h1>
<div class="actions">
<a href="{{.BackLink}}" class="btn">Back to notebook</a>
<a href="{{.JPGLink}}" class="btn">Download JPG</a>
<a href="{{.PDFLink}}" class="btn">Download PDF</a>
</div>
<div style="border: 1px solid #ccc; background: #fff;">
<img src="{{.SVGLink}}" alt="Page {{.PageNumber}}" style="width: 100%; height: auto;">
</div>
{{end}}