The PNTP (Pradhan Mantri National Training Programme) portal was my first major government project. It manages beneficiary data, training program enrollment, attendance tracking, and certificate issuance for a government welfare scheme. The technical requirements were standard; the non-technical requirements were not.
Government software has layers of stakeholders that commercial projects don't. There's the end user (the beneficiary or the field officer), the department administrator, the IT department, legal/compliance, and political leadership — each with different requirements, different vocabularies, and different definitions of success. Managing these layers is a communication skill, not a technical one.
Compliance drove a significant portion of the architecture. Data residency requirements meant everything had to be hosted on government-approved infrastructure. Audit trail requirements meant every data modification needed to be logged with timestamp, user, and before/after state — this isn't a feature, it's a structural requirement that affects your schema design from day one.
The most valuable technical decision was choosing server-side rendering throughout. Government offices often have slow, restricted networks, and client-side JavaScript-heavy applications perform poorly. Full SSR with aggressive caching meant the portal was usable on a 2G government office connection — a requirement that doesn't appear in any requirements document but becomes obvious the first time you visit the actual deployment environment.
The lesson: always visit the real deployment environment before finalising your architecture. The gap between "works on my machine" and "works in a government office in rural Gujarat" is larger than any technical spec document will tell you.