Public file browser for KMSA forecast data in Google Cloud Storage
# kenya-forecasts
A public, read-only file browser over `gs://kenya-forecasting-data`, the bucket
of Kenya Meteorological Service Authority forecast products. It is the place KMSA
sends the public to download forecasts. No login, no upload, no delete.
Live at .
## What this repo builds
A container image on top of upstream Filestash
(`machines/filestash@sha256:f24de790b8828f66807c9097e48add1e846ca0cd2d3a936b3c3e845024e4fe9a`;
upstream ships only a rolling `latest`, hence the digest). The `Dockerfile` sits
at the root and builds from the repo root. `app/` holds the runtime config;
`app/plugin/` is the plugins directory, with one plugin per subdirectory.
- `app/config.json` — the Filestash config with `__TOKEN__` placeholders for the
four secrets, the public host, `S3_ENDPOINT` (defaulted by the entrypoint to
the GCS XML API) and `S3_BUCKET` (a bare bucket name; the entrypoint adds the
leading slash that roots the browse tree at the bucket).
- `app/entrypoint.sh` — validates the five environment values, substitutes them
into `/app/data/state/config/config.json`, installs the plugin zip into
`/app/data/state/plugins/`, and execs Filestash. Both writes happen at runtime
because `/app/data` is an emptyDir that masks whatever the image put there.
Branding ships as a Filestash plugin, a self-contained artifact Filestash loads
on its own. The build packs `app/plugin/branding/` verbatim into a flat
`branding.zip` — the directory name, the zip name and the plugin name Filestash
registers are all `branding`, since Filestash takes the plugin name from the
zip's basename. Filestash discovers zips in `state/plugins/` at startup and
registers the modules the manifest names.
- `manifest.json` — `author`, `version` and three modules, `css`, `favicon` and
`patch`.
- `index.js` — builds the header, the pilot band, the links band and the footer,
and marks the listing row named for the current date. Filestash serves it from
inside the zip at `/assets/ /plugin/branding.zip/index.j …