Skip to content
Shashi Gyawali
← All work

Case study 06 / BLEMS / Local government

One platform, many municipalities

The Basic Level Examination Management System processes and publishes school exam results for local government in Nepal. I led the work that took it from one deployment per body to a single multi-tenant platform.

M1M2M3M4…NONE DEPLOYMENTISOLATED DATA AND ROLES PER BODY

Result

1→NTenants per deployment
RBACConfigurable per body
GOVIn production use
Role

Full-stack dev & tech lead

Years

2021 – 2022

Stack

Next.js, GraphQL, Prisma, MySQL, Redis

Scope

Architecture, RBAC, dashboards

The problem

Each municipality wanted the same thing: collect marks from its schools, process results, publish them, generate statistics. And each one meant another copy of the app to configure, host and patch. Access rules differed per body, and the data was sensitive.

Architecture

  • I built
  • Managed service
  • One deployment
  • 01Matches a build point
SCHOOLSSubmit marksSTAFFEach municipalityPUBLICPublished resultsDASHBOARDSReact + ApolloGRAPHQL APINext.jsTENANT PIPELINEIsolates eachbody's dataDYNAMIC RBACTop authoritysets every roleRESULTSProcessing, stats,reportsMYSQLVia PrismaREDISCODE REVIEWStandards acrossthe teamCOST WORKConsolidateddeployments

What I built

  1. A multi-tenant data model and request pipeline so every municipality ran on one deployment with isolated data and its own configuration.

  2. Dynamic role-based access control: the highest authority in each body could redefine what every other role could do, without a developer in the loop.

  3. Result processing, statistics and reporting dashboards in React with Apollo, built for staff who use a computer twice a year.

  4. Code standards and review as tech lead across the team, plus the infrastructure cost work that came with consolidating deployments.

Next caseData Science Institute01 →