# repo layout

One repo, two implementations of one spec, and the checks that keep them honest.

url: https://getwh.dev/docs/reference/layout

```
cli/     rust cli: the wh binary
web/     next.js app: the web terminal
shared/  explain spec: prompt template, preprocessing rules, provider wording, and golden fixtures both implementations must reproduce
docs/    these pages, as mdx; merging to main publishes them
readme/  the logo and the animated web tour embedded in the readme
scripts/ check-docs.mjs, the guard ci runs over docs/
```

`shared/` is spec once, implement twice: change the spec first, then both implementations, and the golden fixtures under `shared/fixtures/` must be reproduced byte for byte by the rust and the typescript preprocessors.

## building [#building]

```
cd cli && cargo build --release   # binary at target/release/wh
cd cli && cargo test              # unit + integration (isolated git config)
cd web && npm test                # vitest: grammar, preprocessing, providers, usage
cd web && npm run build
```

## ci and releases [#ci-and-releases]

ci runs fmt, clippy, tests, a 3.2 MiB size gate on the binary (3355443 bytes), the web tests and build, the docs check, and a style check (no em dashes). Tagged releases (`v*`) build the four binaries listed in [install](/docs/install#releases) and open a draft github release with checksums.

gpl-3.0 license.
