IMPACT Initiatives: MSNA project in Northern Nigeria. This Repo will mainly contain a monitoring RShiny dashboard and cleaning process
# MSNA 2026 — Monitoring (cleaning + dashboard)
Daily-updating pipeline: pulls survey submissions from KoBo, runs cleaning
and diagnostics against the sampling frame (coverage, duplicates, outliers,
progress against target per stratum), and updates a Shiny monitoring
dashboard. Cleaning and the dashboard run together on the same daily
cadence, but live in separate subfolders so the deployable app stays lean.
## Structure
- `cleaning/` — KoBo pull + cleaning/diagnostic scripts. Writes its
processed output to `data/`.
- `dashboard_app/` — The Shiny app itself (`app.R` or `ui.R`/`server.R`).
Reads from `data/`. Keep this folder to only what the app needs to run —
deployment tools (shinyapps.io, Posit Connect) bundle whatever's in here.
- `data/` — Local exchange between cleaning and the dashboard. Gitignored
(reproducible from `cleaning/` + `input_data/`).
- `input_data/` — Static copy of the sampling frame (from
`../1_sampling/output/`) that cleaning diagnostics run against. Gitignored;
copy in the file(s) you need, don't reference `1_sampling/` by path.
## Setup
```r
renv::restore() # installs the exact package versions from renv.lock
```
`renv.lock` is committed (already tracked); `renv/library/` is gitignored.
Open `monitoring.Rproj` in RStudio and renv activates automatically
(`.Rprofile` handles this) — no manual `renv::init()` needed, that's
already been done.
## Status (2026-08-02) — v1 draft, built against mock data
A cleaning script is being built separately and will land within a day or
two. To avoid blocking on that, this v1 was built end-to-end against a
**simulated submissions dataset** so the dashboard itself could get to
~95% complete before real data exists. Everything below is real except
the submission data.
- **`input_data/`** populated: WORKING sampling frame (household- and
strata-level, 31,051-interview fielding plan, 176 covered LGAs),
coverage summary, and admin0/1/2 boundary shapefiles — all copied from
`../1_sampling/output/` and ` …