Raju Rayhan
Head of Development · AI Platform Architect
Available · Q3 2026
← work / dss hrms
Case 06 · 2022 · Government HRMS

DSS HRMS

A full-suite human resources management system for the Department of Social Services, Government of Bangladesh. Payroll, attendance, leave, and loan modules wired into a single, role-scoped platform serving a nationwide civil-service workforce.
LaravelAngularMySQLRedisDockerREST APIs
4
Modules · payroll→loans
gov
DSS · Bangladesh
District offices covered
Audit retention
§ 01 The brief
Context

The Department of Social Services runs welfare programs across every district of Bangladesh. Its workforce was managed across ledgers, spreadsheets, and a handful of loosely-connected tools. The brief was to replace all of it with one HRMS that an officer in Dhaka and a clerk in a district office could both trust.

Constraints
  • Government-grade auditability — every payroll cycle had to be reproducible years later.
  • Role hierarchy mirrored the civil-service org chart — not a generic RBAC model.
  • Spotty connectivity at the edges; the UI had to survive a bad line.
  • Bangla and English side-by-side, including in printable artefacts.
In government software, the interesting work isn't the features — it's making the boring parts (payroll, leave, loan repayments) behave identically every month, forever.
— lesson from cycle one
§ 02 The architecture simplified
           ┌──────────────────────────────────────────┐
           │   Angular SPA · role-scoped dashboards   │
           │   (officer · clerk · auditor · admin)    │
           └────────────────────┬─────────────────────┘
                                │
                    ┌───────────▼────────────┐
                    │   Laravel REST API     │
                    │   · session + policy   │
                    │   · bilingual renderer │
                    └───┬───┬───┬───┬────────┘
                        │   │   │   │
            ┌───────────┘   │   │   └────────────┐
            │               │   │                │
   ┌────────▼──────┐ ┌──────▼─┐ ┌────▼──────┐ ┌──▼────────┐
   │  Payroll      │ │Attend. │ │  Leave    │ │   Loan    │
   │ · cycles      │ │ · shift│ │ · balance │ │ · schedule│
   │ · deductions  │ │ · bio- │ │ · routing │ │ · repay-  │
   │ · bank file   │ │  metric│ │   workflow│ │   ments   │
   └────────┬──────┘ └──┬─────┘ └────┬──────┘ └──┬────────┘
            │           │            │           │
            └───────────┴────┬───────┴───────────┘
                             │
                    ┌────────▼────────┐    ┌──────────┐
                    │     MySQL       │◄───┤  Redis   │
                    │  · partitioned  │    │ · cache  │
                    │  · audit table  │    │ · queues │
                    └─────────────────┘    └──────────┘
§ 03 A few decisions
03.1
Payroll as an immutable ledger, not an editable table

Each payroll cycle was written once and never mutated. Corrections happened as explicit reversal + re-issue entries. Three years in, when an auditor asked why a 2022 cycle looked the way it did, we could replay it byte-for-byte — including the bugs we'd since fixed.

03.2
Role hierarchy mirrored the org chart

Rather than building abstract roles and wiring permissions into them, we modeled the actual DSS civil-service hierarchy as a first-class graph. A district officer's view was derived from their position in the graph, not from a hand-maintained permission list.

03.3
Offline-tolerant submissions, explicit sync state

Attendance clerks in weak-signal districts needed forms to submit reliably. The client queued submissions locally, surfaced sync state to the user honestly ('3 entries pending · last synced 11:42'), and refused to silently lose anything.

03.4
Bilingual artefacts, not bilingual UI

The app UI was English; printable artefacts — pay slips, leave orders, loan agreements — were always rendered with both Bangla and English side-by-side, from the same templating layer. One source of truth, two audiences.

§ 04 Outcomes
Before
  • Payroll across spreadsheets, reconciled by hand every month
  • Leave requests moving on paper, with weeks of lag
  • Loan repayment schedules tracked in parallel systems
  • Attendance data fragmented across district offices
After
  • One HRMS across payroll, attendance, leave, and loans
  • Reproducible payroll cycles — every run auditable
  • Leave workflows digital, routed by org hierarchy
  • District offices online, offline-tolerant, honestly sync-aware
Back to
The Casebook
All projects →