# Nigeria Budget 2026
**Live:
slkies.github.io
A static site for exploring the **2026 Appropriation Bill (Details)** published by
Nigeria's Budget Office of the Federation — 2,790 pages of tables turned into
linked views:
| Route | What it answers |
|---|---|
| `/` | How the ₦51.59trn splits into personnel, overhead and capital |
| `/ministries` | Who gets what — treemap and sortable table, drilling into agencies and their full line-item budgets |
| `/projects` | Search all ~28,000 named capital projects by name, ministry, state, size and status |
| `/categories` | What the money buys, cut across ministries by economic classification |
| `/map` | Where projects are named, inferred from project titles |
| `/about` | Extraction method, reconciliation, and what to distrust |
## Pipeline
```
2026 Appropriation Bill (Details).pdf
│ scripts/parse_budget.py pdfplumber, word-level geometry
▼
data/budget_raw.json funds · agencies · line items · projects
│ scripts/build-data.mjs classification, state matching, splitting
▼
public/data/*.json one payload per route
│ next build static export
▼
out/
```
### Regenerating the data
The parse is slow (~10 min) and only needs rerunning if the source PDF changes.
Point `PDF` in `scripts/parse_budget.py` at the file, then:
```bash
python scripts/parse_budget.py data/budget_raw.json
```
The build step is fast and runs automatically before `next build`:
```bash
npm run build:data
```
It **fails the build** if the extracted grand total drifts more than 0.1% from
the total the bill publishes, so a parsing regression cannot ship silently.
## Development
```bash
npm install
npm run dev
```
```bash
npm run build
```
`next.config.ts` sets `output: "export"`, so `npm run build` produces a fully
static `out/` directory servable from any host — GitHub Pages, Netlify, Vercel,
or a bucket. There is no server runtime.
## Da …