demo.staging.app.rapidvalue.eu — never against prod tenants. The staging demo tenant has pre-seeded "Charlotte the over-permissioned admin" + 53 product screenshots + IVIP fixtures (3 SoD rules + 30d risk-trend + dormant grants).
| Purpose | URL | Notes |
|---|---|---|
| Public marketing | www.rapidvalue.eu | Netlify — share with prospects |
| Pricing page | /pricing.html | List prices anchor for negotiation |
| Demo tenant app | demo.staging.app.rapidvalue.eu | Use for screen-share demos |
| Demo tenant API | demo.staging.app.rapidvalue.eu/api/v1 | OpenAPI: /docs if exposed |
| Staging app (default tenant) | staging.app.rapidvalue.eu | For test-account development |
| Staging ops portal | staging.ops.rapidvalue.eu | Platform-admin (vendor-internal) |
| Prod tenant app | app.rapidvalue.eu | Never run live demos here |
X-Demo-Role header)Auto-injected from localStorage["demoRole"]. Click any value below in DevTools console to switch:
localStorage.setItem("demoRole", "iga_admin"); location.reload();
| Role | What they see | Demo use-case |
|---|---|---|
iga_admin | Everything — full IAM admin | Default for most demos |
iga_auditor | Read-only audit + compliance | Audit-pack export, audit-trail walk |
iga_manager | Team-scoped (manager's reports) | Cert campaign, JML approve flow |
iga_resource_owner | Owned resources only | App-owner cert + business-role mining |
iga_helpdesk | Tickets + manual-prov-tasks | Helpdesk workflow demo (escalations) |
iga_user | Self-service portal only | End-user access request flow |
| Tenant | Username | Password | Notes |
|---|---|---|---|
| demo (staging) | admin@demo.rapidvalue.eu | see 1Password vault | MFA disabled on demo tenant |
| default (staging) | admin@default.rapidvalue.eu | see 1Password vault | Dev-only tenant |
| prod self-signup | via /tenant-signup | — | Public signup for trial flow |
Restore the demo tenant to its baseline shape in ~30 seconds:
Per the mock-data principle in CLAUDE.md, only config + history rows are direct-seeded. Identities + accounts + grants come from the HR + target sync re-runs.
Re-shoot the 53 product screenshots from the staging demo tenant:
Outputs land in marketing/website/screenshots/ after the Netlify-site refactor. Re-deploy via `marketing/website/` Netlify push to publish.
Lab mocks are tenant-aware via path prefix /t/{tenant_id}/...:
| Mock | URL | Reset |
|---|---|---|
| HR (Workday-shape) | hr.lab.rapidvalue.eu/t/demo/api/employees | POST /admin/reset |
| AppHub (SCIM target) | apphub.lab.rapidvalue.eu/t/demo/scim/v2/Users | POST /admin/reset |
| LDAP | ldap.lab.rapidvalue.eu/t/demo/... | POST /admin/reset |
Admin header required: X-Admin-Token: lab-demo-reset. List tenants: GET /admin/tenants. Drop a tenant: DELETE /admin/tenants/{id} (default is protected).
seed_ivip_demo_fixtures.py opnieuw (3 SoD + risk-trend + dormant).POST /api/v1/certification/sweep dwingt manueel.orchestrate_reset_cycle.py herstelt HR-data inclusief de demo-persona.APP_ENV != "production").