Demo and test data
DigiFIR is demonstrated and tested only with synthetic data. No real Aadhaar data, real complaint or real person's details are used anywhere in development, testing or the demonstrations. Outside systems run on simulators that use the real request and response shapes.
Reference data on the development network
The development network's bootstrap (TestBootstrap in the chaincode repository) creates:
| Item | Values |
|---|---|
| States | Rajasthan (RJ, State A, PoliceStateAMSP) and Delhi (DL, State B, PoliceStateBMSP) |
| Police stations | RJ-JAI-PS07 and RJ-JAI-PS08 (Jaipur), DL-NDL-PS02 (New Delhi) |
| Courts | RJ-JAI-JMFC-03, DL-NDL-JMFC-01 |
| Forensic laboratory | FSLJ |
| Institutions | One registrar each, gateway keys, services, test officials and a citizen DID registered by a KYC attestor |
On a fresh network the first filings get exact numbers, for example CMP-RJ-JAI-PS07-<year>-000001, FIR RJ-JAI-PS07-<year>-000001 and laboratory number FSLJ-CY-<year>-0001.
The network repository's own smoke test uses separate sample identities (A-D01-PS07 and so on) with attribute-based roles. These exist only for that test.
Seeding a development stack
Bring up the network and deploy the chaincodes:
sh../digifir-network/scripts/network.sh up ../digifir-network/scripts/network.sh createChannel make deploy-dev # in digifir-chaincodeRun the bootstrap once (it can be run again safely):
shcd integration && DIGIFIR_INTEGRATION=1 go test -count=1 -run '^TestBootstrap$' ./...For each institution, install its first registrar the way a real installation does: the MSP administrator bootstraps the registrar with an offline signature,
roster-install <MSP id> < registrars.jsonputs the registrar on the roster, and the registrar then registers the backend's service keys and enrols officials.
Run it locally has the complete sequence.
Simulators
| Simulator | Stands in for | Notes |
|---|---|---|
| Identity simulator | DigiLocker, Aadhaar | A made-up citizen signs in (persona asha-verma by default). Refused when the backend runs as the pilot. |
| DigiLocker simulator | DigiLocker / Meri Pehchaan | Its page lists made-up people to sign in as |
| eSign simulator | A CCA-licensed eSign provider | Signs as the complainant; returns a signed success response |
| SMS DLT simulator | The NIC SMS gateway | Development may also use MSG91 |
| CCTNS, ICJS, eCourts, e-Sakshya, e-Forensics simulators | Those systems | With fault injection: latency, timeouts, 5xx, 429 |
| Places | The India-hosted geocoder | Answers from the India Post directory, a bundled dataset and the registry's stations |
Demo mode of each app
Each app runs entirely on the phone in demo mode when no backend is configured in a development build, or when built with --dart-define=BACKEND=demo. Nothing reaches the police or a court. A release build never falls back to demo: without a backend address it shows "Service not configured".
| App | How to sign in | What to try |
|---|---|---|
| Citizen | Continue with DigiLocker signs in the demo citizen at once; or Get a code for the police station, which a stand-in desk confirms after about 6 seconds. Mobile code 123456. Any PIN that is not too easy. | File a complaint. About 8 seconds later a stand-in station registers it as an FIR, or keeps it for a magistrate when it repeats an earlier one. |
| Citizen web portal | npm run dev in portal/ without a backend address. DigiLocker answers at once; the station code is confirmed after about 6 seconds; Aadhaar OTP takes 2345 6789 0124 and 123456. | The same journey in a browser |
| Police | Verify SIM 1 (Airtel, Police CUG). SIM 2 (Jio, Personal) shows a personal SIM refused. The default officer is the SHO; start in another role with --dart-define=DEMO_ROLE=IO. | The sample station Jaipur PS07 with five complaints; Profile, Demo switches the role, no signal, a removed SIM and CCTNS down |
| Lab | Any staff code of 3 letters and 5 digits, such as RJF20419. SIM 1 (Airtel) matches; SIM 2 (Jio) does not. | On Scan, type EV-000470-01; long-press the "SIM bound" chip to simulate a removed SIM |
| Court | Any JO code such as RJ01427 (Smt. A. Bhargava). SIM 1 (Jio) matches; SIM 2 (Airtel) does not. | A blocked complaint arrives about 5 seconds after Review opens; FIR …447 has a closure report, …388 a chargesheet, …441 is past its default-bail limit; verify RJ-JAI-PS07-2026-000441 |
CAUTION
Demo builds allow screenshots, for app store listings. Never give a demo build to officers as their working app, and never ship a build with the identity simulator switch (IDENTITY_SIMULATOR=true).
Sources: digifir-backend docs/NETWORK.md, docs/architecture/BACKEND.md sections 10.1 and 14; digifir-chaincode README.md; each app's docs/02-run-the-app.md and the citizen app's docs/11-web-portal.md on the migration branch.