Staging & dev databases
Give every developer a realistic Postgres copy — right-shaped schema, FK-intact rows, and not one byte of production PII.
Why synthetic staging data?
Real data in staging creates the same three problems on every team — regardless of size.
- PII exposure. Production rows contain real customer data. A careless dump, a shared snapshot, or a staging breach leaks it — and "we only use hashed copies" is a process promise, not a guarantee.
- Stale, broken fixtures.
pg_dumpsnapshots rot. By the time staging reflects the schema again, the data no longer matches the columns, and foreign keys snap when anything is truncated and reloaded. - Hand-maintained seed scripts. SQL fixtures drift from the schema, nobody trusts them, and the developer who wrote them left two years ago.
The alternative isn't more scripts. It's generating data from the schema itself.
The Weavori approach
Weavori treats your source database as read-only — it introspects the schema and analyzes value distributions, and never reads a single production row into memory for output.
- Foreign keys resolved for you. Weavori reads your constraints, orders tables by dependency, and generates parents before children — every generated row references a real parent.
- Realistic by default. Column distributions come from
pg_stats, so values look like production without being production. - New values, never copies. Nothing is scrambled or cloned — every value is generated fresh, so no PII survives by construction.
- Zero configuration. No YAML, no mapping files. Point at a schema, pick a row count, done.
Generate a staging database
npm install -g @weavori/cliThe first argument is the target — Weavori reads the schema, resolves the foreign-key order, and streams rows table by table.
weavori generate postgres://staging.example.com:5432/app --rows 100000$ weavori generate postgres://staging.example.com:5432/app --rows 100000
✓ connected · 24 tables · 31 foreign keys
✓ resolved order · 6 tables generated as parents
✓ generating app.users … 100000 rows (2.1s)
✓ generating app.orders … 100000 rows (3.4s)
✓ generating app.order_items … 200000 rows (5.0s)
✓ done · 24/24 tables · 4.2M rows · referentially intact$ psql postgres://staging.example.com:5432/app -c "SELECT count(*) FROM app.orders;"
count
--------
100000
(1 row)Your staging database now has the shape of production — with none of the liability.
Get started
Install Weavori, connect a database, and generate your first dataset in under five minutes.
Prefer to read first?
The end-to-end workflow guide walks through connecting, generating, and exporting a full dataset. The quickstart is the fastest possible start.
npm install -g @weavori/cli