Project notes

A closer look at the product and engineering decisions behind CodeQuest.

Authentication

Keeping tokens out of the browser with a BFF

CodeQuest uses a Spring backend-for-frontend to complete OAuth login, store the authenticated session in Redis, add access tokens to API calls, and keep the Next.js client focused on same-origin requests.

Challenge engine

Testing frontend challenges, not just screenshots

The frontend workspace combines Monaco editors, a live preview, DOM interactions, visible tests, hidden submission tests, and visual comparison so learners must build behavior as well as styling.

Payments

Connecting learning access to Bakong KHQR

Paid courses and subscription plans open a KHQR checkout. CodeQuest checks the transaction result and unlocks the selected access after payment is confirmed.

Product design

Designing one administration workspace

The admin area groups content, engagement, people, commerce, and configuration around reusable tables and editors rather than treating every module as a separate application.