📄 v1-plus-backlog.md 3,288 bytes Apr 21, 2026 📋 Raw

Blog v1+ — Backlog

Status: Backlog (post v1.0)
Owner: Daedalus (frontend) + Socrates (backend)
Approver: Matt


Article Page Rebuild ⭐ (Frontend)

Medium-style article template matching the new index aesthetic.

  • [ ] Rebuild blog_article.html.j2 to match new CSS tokens
  • [ ] Reading progress bar (red line at top, like Medium)
  • [ ] Estimated read time in article header
  • [ ] Article-specific typography (larger body text, comfortable line length)
  • [ ] Prev/next navigation at bottom
  • [ ] Social share links (Twitter/X, LinkedIn) — no tracking pixels

Effort: Medium | Priority: High


Search Without Fuse.js (Frontend)

Current search requires Fuse.js CDN. Alternatives:

  • [ ] Option A: Pre-build JSON search index at build time, use simple substring match
  • [ ] Option B: Use database-backed search via API
  • [ ] Option C: Keep Fuse.js, add to deployment bundle as local copy

Effort: Low | Priority: Medium


Author Byline & Avatar (Frontend)

  • [ ] Add author section to article headers
  • [ ] Avatar image support
  • [ ] "Written by" attribution

Effort: Low | Priority: Low


  • [ ] End of article: "More from HoffDesk" section
  • [ ] Same-category posts
  • [ ] Algorithm: last 5 posts in same category, exclude current

Effort: Medium | Priority: Low


Sitemap & SEO Enhancements

  • [x] sitemap.xml.j2 exists (Socrates, Phase 3)
  • [ ] Add canonical URLs to all pages
  • [ ] Open Graph images for sharing (og:image)
  • [ ] Twitter card meta tags

Effort: Low | Priority: Medium


Draft/Scheduled Publishing (Backend)

  • [ ] Draft posts visible only to admin
  • [ ] Schedule publish date/time
  • [ ] Email/push notification on publish (future)

Effort: Medium | Priority: Medium


Static Generation (Builder Script)

  • [x] builder.py exists (Socrates, Phase 3)
  • [ ] Verify full static export workflow
  • [ ] Add --drafts flag to include draft posts in export
  • [ ] Add --future flag to include scheduled posts

Effort: Low | Priority: Medium


Analytics (Privacy-First)

  • [ ] Optional: self-hosted Plausible Analytics
  • [ ] Or: simple hit counter per post (SQLite)
  • [ ] No Google Analytics, no third-party tracking

Effort: Medium | Priority: Low


Comments (Future)

  • [ ] Self-hosted comment system (e.g., Remark42,Isso)
  • [ ] Or: Telegram comment integration
  • [ ] Anti-spam measures

Effort: High | Priority: Low


Newsletter (Future)

  • [ ] RSS-to-email via blog.bot or self-hosted
  • [ ] Substack migration path
  • [ ] Email verification flow

Effort: High | Priority: Low


Nice-to-Have Polish

  • [ ] Custom 404 page
  • [ ] Custom 500 page with error details (dev) / generic message (prod)
  • [ ] Cookie consent banner (GDPR) — if EU traffic expected
  • [ ] AMP pages for Google indexing
  • [ ] Dark mode toggle (user preference)

Effort: Low | Priority: Low


Tech Debt

  • [ ] Move all hardcoded URLs to config (base_url)
  • [ ] Document template inheritance hierarchy
  • [ ] Add CSS custom properties for all colors (already done ✅)
  • [ ] Add responsive image srcsets (sizes: 400w, 800w, 1200w)

Effort: Medium | Priority: Medium