NGO dashboard

The NGO dashboard is the head-office view across every centre. Only users with the Platform Admin role see it in the sidebar. It answers four questions at a glance:

  1. How much has the NGO received this year, across all centres?
  2. How much has been spent?
  3. Is any centre’s audit chain unhealthy?
  4. Where are the pending approvals piling up?

How the rollup works

Each centre’s data lives in its own database. The NGO dashboard does not perform cross-database joins on every page load — that would be slow and brittle. Instead:

Aggregator taskevery 15 min
Per-centre POSTED totalsvia explicit alias
Control-plane read-modelscons_tenant_summary
Dashboard queryO(centres), not O(txns)

The aggregator runs every 15 minutes on a scheduled Celery task. It reads POSTED totals from each centre via an explicit per-centre database handle, never the default router — this removes any possibility of context-leak between centres. The results land in two small Control-Plane tables that the dashboard queries.

Manual refresh

If you need numbers “right now” (say, a trustee meeting is starting and the aggregator last ran 12 minutes ago), click Refresh now at the top of the dashboard. This runs the aggregator synchronously for every Active centre and reloads the page. It is idempotent and safe to click as often as you like.

Reading the Centres table

The table below the KPI cards lists every Active centre with:

  • Donations MTD / YTD — month-to-date and year-to-date postings.
  • Expenses YTD.
  • Net YTD — donations − expenses.
  • Pending — number of expenses awaiting approval at that centre.
  • Audit — green Verified or red Failed based on the most recent chain verification.
  • Freshness — how long since this row was last recomputed.

Click a centre’s name to jump to the Tenant detail page, where you can view its config, its user roster, and drill into its reports.

When a chain goes red

A red Audit badge means the hash-chain replay for that centre diverged from the stored record hashes. This is never a “soft” warning — it means someone has touched the audit rows directly at the database layer, bypassing the application. Investigate immediately using the Chain integrity chapter.

What you cannot do from here

  • Create, edit, or void transactions at a centre — do that inside the centre context.
  • Grant roles for a specific centre — use the Users & Roles screen.
  • Unlock a closed period at a centre — go to the Period locks page for that centre; it requires step-up.

The dashboard is deliberately read-only. Mutations happen inside the centre context so that per-centre audit logs tell a coherent story of what happened there.