# Propware

FOSS **movie / TV / stage software props**: fullscreen browser screens that look like case files, access gates, cellphone triangulation, ERP, and a DMV desk. Every record is synthetic via [@faker-js/faker](https://fakerjs.dev) (MIT).

Live hub: [`/skylab/propware/`](./index.html)

## Props

| Screen | Path | Beat |
|---|---|---|
| Access gate | [`props/access/`](./props/access/) | Red **ACCESS DENIED** (try 1) → green **ACCESS GRANTED** + sound (try 2); badge = Jakobus Swart |
| Intel files | [`props/intel/`](./props/intel/) | **TOP SECRET // SCI** multi-agency dossiers; heavy redaction; clearance gate |
| Case files | [`props/fbi/`](./props/fbi/) | Primary subject Jakobus Swart + Faker filler |
| Cell fix | [`props/triangulation/`](./props/triangulation/) | Subscriber = Swart spelling / AKA |
| Nexus ERP | [`props/erp/`](./props/erp/) | PO hold + buyer under Swart spelling |
| Motor vehicles | [`props/dmv/`](./props/dmv/) | License under variant spelling + AKA line |

## Through-line subject

[`lib/subject.js`](./lib/subject.js) locks **Jakobus Swart** across every prop: orthographic variants (Jacobus / Kobus / Zwart / Schwartz), aliases, cryptonyms (`NIGHTJAR`, `KESTREL-7`, …), and the **cover likeness** from *A Man They All Read Wrong — The Jakobus Swart File* (`assets/jakobus-swart-mug.png`). Intel bodies are `redactHeavy()`; civil systems stay readable.

## Synthetic data (Faker + AI faces)

`lib/data.js` imports `@faker-js/faker@9.9.0` from jsDelivr and exposes:

- `applySeedFromUrl()` — `?seed=42` or `?seed=slug` for reproducible takes
- `makeFbiFileSet()`, `makeTriangulation()`, `makeErpDashboard()`, `makeDmvRecord()`, `makeAccessIdentity()`

Each person record includes a `photo` from `lib/faces.js`: sex-matched AI still from [faker-js/assets-person-portrait](https://github.com/faker-js/assets-person-portrait) (Stable Diffusion 3), plus `age` / `ageBand` from DOB. Same `?seed=` locks name, DOB, and face index together.

`thisisnotaperson.com` is offline; this pack is the FOSS stand-in.

```js
import { applySeedFromUrl, makeFbiFileSet } from './lib/data.js';
applySeedFromUrl();
const files = makeFbiFileSet(8);
// files[0].photo.url → CDN JPEG, files[0].age → years from DOB
```

## Sounds

`lib/sounds.js` synthesizes deny / grant / tick / ping with Web Audio (no sample files).

## Run locally

Static files, no build:

```bash
cd skylab/propware
python3 -m http.server 8765
# open http://localhost:8765/
```

Needs network once for the Faker ESM CDN import (and optional Google Fonts).

## License

MIT — see [LICENSE](./LICENSE). Faker is MIT. See [FOSS.md](./FOSS.md).

## Honest boundary

These are **illustrative film props**, not real systems. On-screen watermarks say so. Not affiliated with any government agency or software vendor.
