ADR-003: Web Admin Console — Open-Source CMS
Status
Accepted
Context
The HarvestPlus platform requires a Web Admin Console for health officials and school administrators to:
- Manage school and student enrollment data.
- Build and publish curriculum modules and video content.
- Monitor health screening statistics and program KPIs.
- Generate compliance reports (PDF/Excel).
The options considered were:
| Option | Description | Trade-offs |
|---|---|---|
| Custom-Built Admin | Build a bespoke React admin from scratch | Full control, but high cost and maintenance burden |
| Open-Source Headless CMS | Use an existing admin framework as the foundation | Faster to deliver, proven security, extensible |
| SaaS Platform (e.g., Contentful) | Fully managed content platform | Vendor lock-in, recurring cost, limited custom logic |
Decision
We will build the Web Admin Console on top of an open-source headless CMS/admin framework, extended with custom modules for the HarvestPlus-specific workflows (health screening, M&E, reporting).
Recommended baseline: Directus or Strapi — both are MIT-licensed, self-hostable, and provide:
- A pre-built, role-configurable admin UI.
- REST and GraphQL API auto-generated from the data model.
- Fine-grained RBAC (matches our role model: Admin, Coordinator, Viewer).
- Asset management for video uploads and thumbnails.
- Webhook support for event-driven notifications (linked to STU-005).
The final tool selection (Directus vs. Strapi vs. alternative) will be made during the Discovery phase, based on team familiarity and hosting constraints. The architecture is tool-agnostic — the Flutter mobile app communicates with the REST API layer regardless of which CMS backs it.
How This Helps the User (HarvestPlus)
| Feature | How the Open-Source CMS Delivers It |
|---|---|
| Publish nutrition videos | Upload assets via admin UI, set grade/category tags |
| Create curriculum modules | Drag-and-drop module builder, no code needed |
| Manage student rosters | Bulk CSV import > data model synced to app |
| View health KPIs | Custom dashboard plugin fed by the screening API |
| Assign content by grade | Built-in relational content linking |
Consequences
Positive
- Significantly reduces admin UI development time — foundation is pre-built.
- HarvestPlus team can manage content independently after handover.
- Self-hostable — no per-seat or per-user SaaS fees.
- Security patches come from a large open-source community.
Negative
- Requires initial configuration and schema mapping during Discovery.
- Custom reporting module (ADM-103) will still need custom development.
- Some deep UX customisations may require bespoke plugin work.