Files
go-cv/PLAN.md
Bryan Joshua Pedini 166a2a2831 fix: correct dependencies and add Dockerfile
- Mark direct dependencies properly in go.mod (fsnotify, fpdf, goldmark)
- Remove duplicate Theme assignment in type_webserver.go
- Add Dockerfile for multi-stage build (was missing from repo)
- Update PLAN.md with completed tasks

Co-Authored-By: Claude (glm-5) <noreply@anthropic.com>
2026-03-05 02:43:34 +01:00

2.1 KiB

Implementation Plan

Project Constraints

  • Pure Go binary (no external system dependencies for PDF).
  • Config via config.yaml only (no CLI flags).
  • Hardcoded paths: ./content (input), ./output (build artifacts).
  • Modes: gocv (CLI), gocv serve (Daemon).
  • Commit at every loop iteration. Do not push. Do not tag.

Current Status

  • Project backbone exists (HTTP server, graceful shutdown, config reading).
  • Markdown parsing logic implemented (using goldmark).
  • HTML Template engine integrated (Hugo-like theme selection).
  • PDF Generation implemented (using go-pdf/fpdf - Pure Go library).
  • CLI Mode (gocv) generates static files to ./output and exits.
  • Serve Mode (gocv serve) hosts HTML and serves PDF on demand.
  • File Watcher implemented for live reload in Serve Mode (using fsnotify).
  • Dockerfile created for multi-stage build (re-created: was missing from repo).
  • go.mod dependencies corrected (marked direct deps properly).

Active Task

  • Analyze existing backbone code and integrate Markdown parsing.
  • Integrate HTML template engine with theme selection.
  • Implement Serve Mode with file watching for live reload.
  • Create Dockerfile for multi-stage build.
  • All tasks complete - project ready for testing.

Known Issues / Blockers

  • Identify best Pure Go PDF library that supports HTML/CSS (or define CSS subset).
    • Selected go-pdf/fpdf - generates PDFs programmatically from markdown AST.
    • Note: Not HTML-to-PDF conversion; walks goldmark AST and renders directly.
  • Current output is raw HTML fragments without full HTML document structure.

Completed Log

  • Initial project structure defined.
  • Basic HTTP server and signal handling implemented.
  • CLI mode vs Serve mode distinction implemented (checks os.Args[1] for "serve").
  • Content reading from ./content directory implemented.
  • Markdown to HTML conversion using goldmark library.
  • Theme system with templates/themes/{theme}/base.html structure.
  • Config.yaml theme setting (defaults to "default").
  • Output now generates complete HTML documents with styling.