Replace the Flask prototype with a Node/TypeScript monorepo
The handover prototype was a Flask app that catalogued installers someone
had copied into place by hand. It is replaced by three npm workspaces: a
shared type contract, an Express/SQLite server that fetches and builds the
files itself, and a dh-components frontend.
Files now come from GitHub releases, winget, SVN, a direct link or a Git
repository the server builds. Nothing is uploaded by hand. Administration
is reachable only at localhost; the network sees the catalogue and the
downloads.