This gets the API, the database, and the web UI running on your machine. Node.js 18 or later is required (the server uses native fetch).
1

Install and seed the server

From the server/ directory:
This creates server/data/app.db and generates 20 synthetic persons, each with a NIN, a BVN, and a photo. Photos are AI-generated if your machine has internet access, or procedurally generated otherwise — either way, seeding always succeeds. See Avatar Photos for details.
2

Start the API server

The API listens on http://localhost:4000. Confirm it’s up:
3

Install and start the web UI

In a second terminal, from the client/ directory:
Open http://localhost:5173. The dev server proxies /api and /images requests to the API server on port 4000, so both need to be running.
4

Try it out

  • The dashboard shows live counts pulled from /api/stats
  • Find by NIN / Find by BVN look up any of the 20 seeded records — copy a NIN or BVN from your terminal’s seed output
  • Enroll adds a new synthetic person and issues a fresh NIN and/or BVN

Changing the seed size

Set SEED_COUNT before seeding to generate a different number of persons:
Re-running npm run seed adds more persons on top of what’s already there — it doesn’t clear the database first. To start over, delete server/data/app.db* and the files in server/data/images/, then reseed.