Product

Civora

An operations platform for NGOs that follows one activity from the grant and its budget, through the field report and its evidence, to the money spent and the report the donor receives — running for KEYSA.

year
2026
role
Product design & full-stack engineering
type
Product
stack
9 technologies
Civora overview for KEYSA — the eight-step core workflow from team and grant to an approved, paid expense, with delivery, approvals, field reports and payments alongsideCivora departments — KEYSA's org chart with Finance, Human Resources & Admin, Monitoring & Evaluation and Programmes, each with its lead, people and projects

The problem

In most NGOs the activity, the field report that proves it happened, the expense it caused and the budget line it was charged to live in four different places — a spreadsheet, a WhatsApp group, a paper form and an email thread. Approvals leave no record, field staff work where the signal drops, and every donor report is rebuilt by hand from whatever can be found.

My approach

I built one spine rather than a pile of modules: grant → project → budget lines → activity → field report (offline) → supervisor review → M&E validation → indicator results, and alongside it expense request → approval chain → payment → budget position → donor report pack. It is deliberately not an ERP, a payroll engine or a donor CRM. A new organisation registers and gets starter departments, budget categories, approval policies and a report template, so the core workflow runs on the first day.

How it's built

  • A Next.js 16 modular monolith (App Router, Server Actions) on PostgreSQL with Drizzle — each area owns its queries, actions and business rules, and the pages stay thin.
  • Multi-tenant from the start: every query is scoped by organisation, and project-scoped roles see only their own projects — enforced in server actions and API routes, not just hidden in the interface.
  • Field reports work offline: saved on the device first and synced with an idempotent client id, so a retry on a bad connection never files the same report twice.
  • Configurable approval policies by amount band, request type, grant and department; nobody approves their own request, and approval is never mistaken for payment.
  • Built-in mail: each person connects their own mailbox over IMAP/SMTP, kept live with IMAP IDLE and pushed to the browser over Server-Sent Events, with credentials encrypted (AES-256-GCM) and any email filed against a grant, project or request.
  • An append-only audit log with before-and-after snapshots, and every export recorded.

Highlights

  • One record from plan to proof: a validated field report feeds the indicator results automatically, and an approved expense moves the budget line's live position.
  • Reported, reviewed and validated figures are kept separate, so a donor can see which numbers M&E has signed off.
  • Present mode turns live figures into board-meeting slides whose titles state the takeaway — no deck to build.
  • A per-grant donor report pack: the award, financial summary, results against targets, delivery and evidence for any period.