summaryrefslogtreecommitdiffstats
path: root/internal/builder
diff options
context:
space:
mode:
authorClaude <noreply@anthropic.com>2026-03-31 12:44:10 +0200
committerClaude <noreply@anthropic.com>2026-03-31 12:44:10 +0200
commitaa23774abb90c168c9ba2559d6bf381bc9fc55ba (patch)
treec4f4abfafb6e8e47a1ab505fe1253b951ccf77c9 /internal/builder
parent8d7cda6e578e684483c0b5c7391c48e5b9ac5192 (diff)
downloadnebbet.no-aa23774abb90c168c9ba2559d6bf381bc9fc55ba.tar.xz
nebbet.no-aa23774abb90c168c9ba2559d6bf381bc9fc55ba.zip
Add post management admin UI and switch to modernc.org/sqlite
- Replace custom CGO sqlite driver with modernc.org/sqlite (registered as "sqlite3"); a local compat shim under compat/sqlite/ provides the same import path and WAL-mode behaviour using system libsqlite3 while network access is unavailable — swapping to the real pure-Go package later only requires removing the replace directive and running go get. - Add internal/admin/server.go: HTTP handler for /admin/ that serves a server-side-rendered post management UI (list, new, edit, delete). Posts are stored as Markdown files under content/posts/ and rebuilt via the existing Builder after every write. Basic auth is checked against the .passwords file when it exists. - Add cmd/nebbet/main.go: unified CLI with build, watch, serve (HTTP server with admin + file server + watch), and user subcommands. - Update builder.BuildAll to skip content/admin/ — admin pages are served dynamically and must never appear in the static output directory. - Mark content/admin/index.md as draft so the old static placeholder is not built even if the admin skip logic is bypassed. - Fix .gitignore: use /nebbet (root-only) so the pattern no longer accidentally ignores the cmd/nebbet/ source directory. https://claude.ai/code/session_01WLuSGxJhNs2cFM2zJzSsTx
Diffstat (limited to 'internal/builder')
-rw-r--r--internal/builder/builder.go5
1 files changed, 5 insertions, 0 deletions
diff --git a/internal/builder/builder.go b/internal/builder/builder.go
index 40be377..59bb71b 100644
--- a/internal/builder/builder.go
+++ b/internal/builder/builder.go
@@ -62,6 +62,11 @@ func (b *Builder) BuildAll() error {
if err != nil || d.IsDir() || !strings.HasSuffix(path, ".md") {
return err
}
+ // Skip content/admin/ — served dynamically by the admin HTTP server.
+ rel, _ := filepath.Rel(b.ContentDir, path)
+ if strings.HasPrefix(filepath.ToSlash(rel), "admin/") || filepath.ToSlash(rel) == "admin" {
+ return nil
+ }
return b.BuildFile(path, importMap)
})
}