MathPro Academy
Online mathematics coaching platform for JSC, SSC, and HSC students across Bangladesh. Server-side KaTeX formula rendering, bKash and Nagad payment integration with atomic enrollment fulfillment, and a mobile-first student dashboard serving 4,000+ students.
- Client
- MathPro Academic & Admission Care / Abdul Aziz
- Role
- Full-Stack Web Developer & Platform Architect
- Timeline
- 2025 – 2026
- Stack
- 9 technologies
A closer look



- Server-side KaTeX formula rendering via React Server Components — zero client JS, zero layout shift, zero CLS penalty
- Idempotent bKash/Nagad webhook handler using Prisma atomic transactions: order update and enrollment creation succeed or fail as a single unit
- HMAC signature verification with timing-safe comparison on all payment callbacks before any database writes
- Structured course tracks for JSC General Math, SSC General & Higher Math (Bangla Medium and English Version), and HSC
- Student dashboard with chapter progress, recorded lecture access, and practice quiz results
- Mobile-first UI optimized for mid-range Android devices on 4G connections
Need a similar delivery process for your product? I can help shape the scope and ship the implementation end to end.
Start a projectThe founder Abdul Aziz was teaching mathematics to secondary school students through video lectures. Students needed structured access to course materials organized by curriculum level — JSC, SSC, Higher Math — with the ability to enroll and pay immediately using the mobile banking apps they already had: bKash and Nagad.
The mathematical content presented a specific rendering challenge. Displaying formulas correctly on mobile browsers without layout shifts and without downloading a large client-side math library is non-trivial. Most platforms handle this poorly — students see raw LaTeX strings for a second before the renderer kicks in, which undermines confidence in the content.
Math rendering was solved by moving KaTeX compilation entirely to the server. React Server Components run at build time for static course pages, calling katex.renderToString() and embedding the pre-calculated HTML directly in the page output. The browser receives fully-rendered formula markup with no JavaScript required — zero bundle overhead, zero layout shift.
Payment integration required careful idempotency design. bKash and Nagad will retry callbacks if your server doesn't respond quickly enough. Without deduplication, a retry can produce multiple enrollments for a single payment. The webhook handler verifies the HMAC signature first, then uses a Prisma transaction to atomically check the order status and write both the order completion and the enrollment record. If the order is already COMPLETED, it returns early without any writes.
The platform launched with organized course tracks matching the Bangladeshi secondary curriculum structure. Students browse courses by level and medium (Bangla or English version), enroll with a single bKash or Nagad payment, and get immediate access to their course dashboard after payment confirmation.
Formula rendering across all course notes and practice problems is crisp and immediate — no loading state, no layout shift. This is particularly important for the higher mathematics content where complex calculus and trigonometry notation appears frequently.
The platform serves over 4,000 students with structured access to mathematics content aligned to their specific exam curriculum. Payment processing runs without manual intervention — the atomic webhook handler has processed thousands of transactions without producing a double enrollment.
Formula-heavy pages load without any visible reflow, and the absence of a math parser in the client bundle saves 180KB+ per page compared to client-side KaTeX rendering.