Originally published at parvejshah.com/blog/high-speed-edge-verification-institutional-credentials by Parvej Shah.
When the Center for Policy Research on Business and Development (CPRBD) at the University of Dhaka approached us about their institutional web portal, certificate verification stood out immediately. CPRBD runs executive education cohorts for mid-career government officials and business professionals, who receive physical certificates used as credentials for government postings and senior roles — and nothing on the physical certificate had ever been independently verifiable.
Why a Structured ID Beats a Cryptographic Scheme
Every certificate gets an ID of the form CPRBD-2025-EXEC-B1-001 — year, program code, batch code, and a per-batch serial minted atomically when a certificate is issued. That ID is what’s printed on the certificate and encoded in its QR code.
Verification is a direct database lookup: given the ID, look up the enrollment record and return whether it exists and is still valid (not archived, not un-issued). No cryptographic signature, no HMAC, no blockchain. The reason this is enough: CPRBD controls both the issuing authority and the verification endpoint. The trust anchor is CPRBD’s own server, not a distributed ledger or a shared secret — an attacker can’t mint a valid-looking ID because the serials are sequential and tied to real enrollment rows, not derived from a formula they could reverse-engineer.
What does protect the endpoint is more mundane than cryptography: it’s rate-limited to 20 requests per minute per IP, and responses are explicitly marked no-store so nothing caches a stale “valid” or “not found” result.
Payment-Gated, Not Module-Gated (Yet)
Certificates are only issued in bulk to students whose tuition is marked complete — the endpoint filters candidates down to paymentStatus === "complete" before minting anything, and reports back how many were skipped as unpaid. Course-module completion is tracked and shown to admins as a reference count, but it isn’t currently enforced before issuance — that’s a gap in the platform we’re aware of, not a feature we’re claiming.
Tuition That Matches How Executive Programs Actually Get Paid
Executive cohorts don’t pay tuition in one lump sum. The platform tracks payments as a sequence of installments against SSLCommerz, each with its own status — pending, complete, failed, refunded — and computes the remaining balance as batch fee minus the sum of completed installments. A student’s material access and certificate eligibility both key off that same installment ledger, so there’s one source of truth for “has this person paid,” not a synced copy of it.
Materials Are Private Because They’re Never Public
The same “one ledger, two gates” idea shows up again in how class materials are shared. Uploaded files live in a data/ directory outside public/, so there’s no static URL Next.js could accidentally serve — the only path to a file’s bytes is an authenticated download route. That route re-runs the same check used for material access generally: enrolled, application approved, at least one completed installment. No signed URLs, no expiring tokens — just “don’t put it somewhere the framework will serve for free, and check on every request instead.”
Each program can also extend its application form with its own questions — beyond the fixed profile fields (contact details, qualifications, nationality, and so on) every applicant fills in once, a program admin can add a text question, a file upload, a date picker, whatever that specific cohort’s intake needs — without a code change or a deploy.
A CMS Built for People Who Don’t Want to Touch Code
The less visible, more used part of the platform: CPRBD staff maintain their own program pages. Each program’s public page is assembled from nine section types — hero, a “why this program” block, stats, testimonials, FAQ, a course outline pulled live from the actual module list, and a few others — that staff can reorder, toggle on or off, and edit inline. Updating a program’s pricing blurb or adding a new FAQ entry used to mean a code change; now it’s a form.
The same philosophy extends to communication and content: coordinators post batch-scoped announcements that automatically email every enrolled student in that cohort, and a separate news/media module lets CPRBD publish institutional press posts independent of both the CMS and the academic research repository — which itself replaced a static list of published papers buried in a Word document on the university website with structured, searchable entries and attached PDFs.
What We Learned
The interesting engineering here wasn’t cryptographic — it was matching the platform’s guarantees to what actually needed guaranteeing. A structured, sequential ID plus a rate-limited lookup is enough when you control the whole trust chain; reaching for HMAC or a blockchain would have added complexity without adding real security here. The harder, more valuable work was elsewhere: an installment ledger that’s the single source of truth for two different gates (materials and certificates), and enough non-technical surface area — CMS, announcements, news — that CPRBD can run the platform day-to-day without opening a ticket.
None of that came from a tidy requirements document. The people who understood how CPRBD actually ran a cohort were busy university staff, available in short bursts, not for a single upfront discovery phase — so the real user stories got built the same way the platform’s admin surfaces did: incrementally, from repeated short conversations rather than one clean spec.
Parvej Shah is a Lead Full-Stack Web Developer & Platform Architect based in Dhaka, Bangladesh. Explore full architecture case studies and production code at parvejshah.com.