Deterministic fake data — same seed, same data, every time. Perfect for tests.
users · orders · posts · seeded · reproducible · zero native deps
- 🌱 Seeded determinism —
?seed=abcreturns byte-identical data across requests, deploys and languages - 👥 Rich fixtures — users with addresses, orders with consistent totals, posts with URL-safe slugs
- 🎲 Custom PRNG — mulberry32 + FNV-1a hashing, no dependencies
- 📏 Bounded — 1–100 items per request, validated
- 🧪 Test-friendly — point your test suite at one seed for reproducible fixtures
git clone https://github.com/v01dst/mock-data-forge
cd mock-data-forge
npm ci
npm startOr with Docker:
docker compose up -d| Method | Route | Params | Description |
|---|---|---|---|
GET |
/users |
count, seed |
Mock users |
GET |
/orders |
count, seed |
Mock orders |
GET |
/posts |
count, seed |
Mock posts |
GET |
/health |
— | Liveness |
curl "http://localhost:3000/users?seed=demo&count=2"{
"seed": "demo",
"count": 2,
"users": [
{
"id": "000001",
"name": "Katherine Stroustrup",
"email": "katherine.stroustrup@fake.org",
"phone": "+1-769-473-9036",
"address": { "street": "6176 Pine Way", "city": "Portland", "state": "OR", "zip": "02841" },
"age": 41,
"active": true,
"createdAt": "2020-08-14T09:12:00.000Z",
"locale": "de-DE"
}
]
}// test setup — every run gets the same users
const { users } = await fetch("http://localhost:3000/users?seed=e2e-fixed&count=25").then(r => r.json());| Status | Meaning |
|---|---|
400 |
count out of range (1–100) |
| Layer | Tech |
|---|---|
| Runtime | Node.js 22 |
| Language | TypeScript (strict) |
| Framework | Fastify 5 |
| PRNG | mulberry32 (in-house) |
| Testing | Vitest 5 |
| Packaging | Docker + compose |
| CI | GitHub Actions |