97c29dac

By: Michael Lynch <git@mtlynch.io>

Support S3-compatible storage as an alternative to local media

Add an S3-compatible storage backend alongside the existing local
filesystem backend. Both the app server and the importer now accept
mutually exclusive --media-dir (local) or --s3-config (S3) flags.

Introduce a MediaSource abstraction in the handlers package so the
server can serve media from either a local path or an S3 base URL.
Update the CSP middleware to allow img-src/media-src from the S3
origin when one is configured.

The s3 and s3config packages currently stub all implementation
functions (returning "not implemented") so the build and dependency
graph are in place without a live S3 connection being required.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Codeberg
configuredevShellbackendbackend-devcheck-bashcheck-frontendcheck-go-formattingcheck-go-test-packagescheck-trailing-newlinecheck-trailing-whitespacediagramdocker-imagee2e-testsgo-testsimport-from-tinybeanslint-sqllittle-momentslittle-moments-devx86_64-linux