Vendor the front-end assets and drop the third-party CDN dependencies
(BootstrapCDN is being sunset): the bootstrap 4.0.0 css/js, jquery
3.2.1 slim, and popper 1.12.9 now live under static/ and are served
from the app, byte-for-byte identical to the previous SRI-pinned files.
Migrate CI from Drone to a Gitea Actions workflow that runs
docker build . on push, with the checkout action pinned by SHA.
Bring the repo up to standard:
- add REPO_POLICIES.md, .editorconfig, .dockerignore, .golangci.yml,
and a comprehensive root-anchored .gitignore
- rewrite the Makefile with the required test/lint/fmt/fmt-check/check/
docker/hooks targets (golangci-lint, 30s test timeout, verbose rerun
on failure, check modifies nothing)
- rewrite the Dockerfile as a hash-pinned multistage build: a lint
stage (golangci-lint), a glibc build+test stage (the legacy sqlite
driver needs cgo+glibc), and a debian-slim runtime carrying the
binary, templates, and static assets
- add real tests for the hn package
- bring the code into golangci-lint (default: all) compliance: fix the
malformed gorm struct tags, check previously-ignored errors, dispatch
the zerolog error event, avoid a uint->Duration overflow, split long
functions, and add doc comments — all behaviour-preserving
- expand the README with the required sections