National Education Management Information System (EMIS)
Ministry of Education & Sports, Uganda
Backend / Full-Stack Engineer — SMS ONE (U) Limited
- Situation
- National identity records and learner records lived in separate systems with no verification at the point of entry. Registrations were duplicated across districts and school levels, so the ministry had no reliable count of who was actually in the education system — and no single place to see staffing, enrolment or district performance together.
- Task
- Build the learners and HR modules, a public search over more than 90,000 school records and the application flows behind it, the access-control layer that governs who may see and change what across the ministry, and the validation and reporting the whole platform depends on.
- Action
- Built the learners module in Laravel and Vue on a PostgreSQL schema exceeding 1,000 tables, integrating NIRA national identity verification directly into the ingestion layer so records are validated at the moment of entry rather than reconciled afterwards. Extended the same foundation with an HR module covering teacher and staff records, deployment and establishment across schools. Implemented role and permission management so ministry headquarters, district officials and individual schools each see and edit only their own scope, and built the reporting layer that aggregates enrolment and staffing into the figures policy decisions are actually made on. Opened the register to the public with a search over more than 90,000 school records — unauthenticated and read-only, so it had to stay fast under open traffic while exposing only what the ministry had cleared for publication — together with the application flows that let schools and the public submit through the same platform. Wrote the data validation and verification pipelines enforcing all of it under concurrent load, and worked on the infrastructure the platform runs on.
Result
30M+ learner records registered across every school level in Uganda, with duplicate registrations eliminated at source rather than cleaned up downstream. Learner, staffing and district reporting are served from one system, and more than 90,000 school records are searchable by the public.
- Laravel
- Vue
- PostgreSQL
- REST APIs
- NIRA Integration
- RBAC
- Reporting
- Public Search
