Building a Multi-District Government System with Laravel Microservices

At Orange Business Development I worked on the Beneficiary Training Management System for RDCD, under Bangladesh's Ministry of Local Government, a platform that manages training programs for 50,000+ beneficiaries across multiple districts. This post covers the architecture decisions we made, why we split the system into services, and what I'd do differently.

The problem

A beneficiary's journey runs through several distinct workflows: registration and verification, training batch allocation, attendance, allowance disbursement, and reporting up the administrative hierarchy (union → upazila → district → ministry). Each workflow has different load patterns and different stakeholders. Registration spikes when a new program opens; reporting spikes at month-end; disbursement must integrate with a payment gateway and absolutely cannot double-pay.

Why microservices, and why "boring" ones

We didn't start from a microservices ideology. We started from three operational facts:

So we split along those seams: a registration/beneficiary service, a training-management service, a disbursement service wrapping the payment gateway, and a notification service (SMS and in-app, since many beneficiaries are reachable only by phone). Each service is a plain Laravel application with its own MySQL schema, fronted by REST APIs, with no exotic infrastructure, because a government project's operations team has to be able to run it for years.

Decisions that paid off

Lessons learned

The system is live at service.rdcd.gov.bd, serving beneficiaries across multiple districts. If you're building something similar, especially in a public-sector context, I'm happy to compare notes; reach me through the contact page.

Frequently asked questions

What is the RDCD Beneficiary Training Management System?

A microservice-based platform built with Laravel that manages training for 50,000+ beneficiaries across multiple districts in Bangladesh, operated under the Ministry of Local Government's Rural Development and Co-operatives Division.

Why use microservices for a multi-district government system?

Services can be deployed and scaled independently per district, a failure in one service stays isolated instead of taking down the whole platform, and each service gets its own CI/CD pipeline with GitHub Actions for safer, more frequent releases.

← All posts