# Ethiopia Civic Registry
A bilingual (English / Amharic), source-cited directory of Ethiopian
politicians and public figures, cross-linked to the federal, regional,
zonal, and woreda geography they serve. Built for `info.ethioweb.net`.
## Stack
- **Next.js 16** (App Router, TypeScript) + **Tailwind CSS v4**
- **next-intl** for `/en` and `/am` routes
- **Prisma** + **PostgreSQL** — see `prisma/schema.prisma` for the data model
(a versioned `AdministrativeUnit` hierarchy, `Person`/`Position`/`Party`,
and a `Source`/`Revision` model for citations and edit history)
## Getting started
1. **Database.** You need a Postgres instance. Locally, the quickest path is Docker:
```bash
docker run -d --name ethioweb-pg \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=ethioweb_registry \
-p 5432:5432 postgres:16-alpine
```
2. **Environment.** Copy the example and adjust if your DB isn't the default above:
```bash
cp .env.example .env
```
3. **Install, migrate, seed:**
```bash
npm install
npm run db:migrate
npm run db:seed
```
4. **Run it:**
```bash
npm run dev
```
Open
localhost (or `/am`).
## Scripts
| Command | Does |
| -------------------- | --------------------------------------------- |
| `npm run dev` | Start the dev server |
| `npm run build` | Production build |
| `npm run db:migrate` | Apply Prisma migrations (`prisma migrate dev`) |
| `npm run db:seed` | Re-run `prisma/seed.ts` |
| `npm run db:studio` | Open Prisma Studio to browse the DB |
## Contribution & moderation flow
Each person profile has "Request a correction" and "Flag this entry"
buttons — public, no sign-in needed — that write to a `Revision` row (see
`src/lib/actions.ts`) instead of the record directly. `/en/moderate`
lists pending proposals; approving one applies the change to the `Person`
row and records the reviewer's …