John Ossai
johnossai20@gmail.com

development

The AMDA Data Collection Hub

Phase 2 of the AMDA support platform — a data collection system where minigrid members submit site data, and admins oversee all submissions through a dedicated management view.

Role

Full-Stack Dev

Year

2024

Category

development

The AMDA Data Collection Hub

Tech Stack

ReactTailwindCSSNode.jsExpressPostgreSQLRedis

The Problem

AMDA (Africa Minigrid Developers Association) is the body representing off-grid energy developers across the continent. Phase 1 of their digital platform focused on member registration and information. Phase 2 — this project — tackled a harder problem: getting those members to actually submit structured operational data about their minigrid sites. AMDA needed this data to publish industry reports, benchmark member performance, and award certification status that carries weight with investors and regulators.

The Execution

I built two separate views on the same backend: a member portal and an admin console. The member portal is built with React and TailwindCSS — it guides members through a multi-section submission workflow with per-section progress indicators, so the 'how much is left' question is always visible. Submissions are stored in PostgreSQL via an Express API, with Redis caching the completion state calculations so progress indicators load instantly on return visits. The admin console gives AMDA staff a full view across all member submissions: filterable by status (draft, submitted, under review, certified), with the ability to leave inline comments and trigger status transitions.

Guided Multi-Section Submission

The member submission flow is broken into distinct sections — site details, financial data, technical specs, operational metrics. Each section has its own completion state, so members can work through the form across multiple sessions without losing progress.

Admin Oversight Console

AMDA staff see all submissions in a single filterable table. They can drill into any submission, leave review comments visible to the member, and move submissions through the approval workflow. Status transitions send automated notifications.

Redis-Cached Progress Engine

Completion percentages are calculated server-side from the submitted data and cached in Redis. Members see their current progress instantly on login without triggering a full database scan.

Certification Threshold Logic

When a submission meets the defined data quality thresholds — completeness percentage, field validation, review approval — the system automatically flags it for certification. AMDA staff confirm and the member's profile is updated.

Impact

6

Submission Sections

< 300ms

Progress Load Time

4 stages

Admin Review Workflows

Growing

Members Onboarded

Technical Notes

The progress calculation was more complex than it looks. Each submission section has different required fields, and some fields are conditionally required based on previous answers. Computing accurate completion percentages meant building a rule engine on the backend rather than doing naive field counting. I defined completion rules as a configuration object per section — required fields, conditional requirements, and minimum data quality thresholds — and ran the submitted data through the engine on each save. Redis caches the result keyed by member ID and submission version, invalidated on every save. This kept the frontend simple: it just reads a pre-computed number.