UKLC UBT
A computer-based exam prep platform that lets Korea-bound workers practice the EPS-TOPIK in its real UBT format — timed mocks, listening audio, and performance analytics.
Overview
UKLC UBT is the digital arm of a Korean language institute. Students preparing for the EPS-TOPIK take the real exam on a computer (UBT), but almost all local prep happens on paper. The platform closes that gap with a faithful exam simulator, a large managed question bank, and analytics that show students exactly where they lose marks.
The problem
Students were failing not for lack of Korean, but for lack of familiarity with the UBT format: strict timing, audio-driven listening sections, and on-screen navigation. Institutes had no way to run realistic mocks at scale, and paper tests could not replicate the listening experience at all.
The solution
I built a pixel-faithful UBT simulator: section timers, streamed listening audio, question flagging, and auto-submission — backed by an admin CMS where instructors compose exams from a tagged question bank. Students get per-section analytics and weak-area drills; the institute gets enrollment, payments, and cohort reporting in one place.
Architecture
A Laravel API serves a React SPA. Exam sessions are stateful and time-critical, so session state lives in Redis with periodic PostgreSQL checkpoints — a browser crash never loses an exam.
Challenges
Timers had to survive refreshes, flaky connections, and clock tampering. I moved authoritative time to the server and treated the client clock as advisory only.
Listening sections stream pre-signed S3 audio with aggressive prefetching, so a mid-exam network dip doesn't stall the section.
Whole cohorts start mocks at the same minute. Redis-backed sessions and queue-deferred scoring kept the spike off PostgreSQL.
Lessons learned
For time-critical flows, design the failure path first — the happy path is the easy part.
Admins are users too: the question-bank CMS drove adoption as much as the student app.
Server-authoritative state plus optimistic UI gives you both trust and speed.