# strata The public archive map at https://stream.waow.tech/strata/: namespaces as spheres sized by archived event counts, with search, profile avatars, and canvas pan/zoom. It is a static page; counts come from one summary snapshot of [Strata](https://strata.zat.dev) taken at deploy time, so visitors make no archive, summary, or profile API requests. ## service The Cloudflare API, D1 schema, R2 archive writer, and drain scripts live in [`service/`](service/). The service was imported with its Git history from the former local `zat.dev/strata` repository. This directory owns both the map and its backing service; they deploy independently. ```sh cd strata/service npm ci npm run check npm run deploy ``` The Worker remains `strata` at `strata.zat.dev`, with the existing D1 database, R2 buckets, and secrets. Do not run schema migrations for a source move. The hourly ingestion flow stays in `my-prefect-server/flows/strata.py` and continues to use the same API. The deployed drain stays at `/opt/strata` on the Stream host: its binaries, progress file, and work directory are runtime state, not repository files. Deploy script updates there without replacing that state. See [service architecture](service/docs/how-it-works.md). ## deploy the map ```sh cd strata && bun install # once: pinned esbuild and @atcute/lexicons just strata # from the repo root ``` `scripts/deploy-strata-preview` fetches the snapshot, bundles `app.js` with d3 into one hashed script, writes gzip sidecars, uploads a release directory, and atomically switches the `site/strata` symlink on the host. See [docs/deploying.md](../docs/deploying.md#strata-playground) for the route, caching, and rollback. `--output-dir