Logo Lanfrica

slkies/nigeria-budget-2026

Domain:

socioeconomic

Record type:

software
Creator:
slk
Host:
# 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 …