Client: Self Project
|Role: Fullstack Developer & System Architect
Tech Stack: React, Firebase, Express.js, OATutor, Piston API, CSS

OATutor is an open-source Adaptive Tutoring System based on Bayesian Knowledge Tracing, originally developed for learning sciences research (published at CHI '23). My final project involved extending its capabilities to support coding problem exercises, cloud infrastructure integration, and gamification features like progress tracking and hint systems. The platform is fully frontend-driven using React and can be deployed statically via GitHub Pages, with optional Firebase logging for analytics.
Existing educational platforms often lack adaptivity or require heavy backend infrastructure. OATutor solves this by offering a lightweight, research-backed tutoring system that runs entirely in the browser. However, it lacked support for coding exercises and modern engagement mechanics. My goal was to bridge that gap by adding structured coding problems, dynamic hint scaffolding, and cloud-based persistence—making it viable for real classroom use.
I extended OATutor’s content model to support coding problems with step-by-step scaffolds, integrated Firebase for user progress logging, and enhanced the UI with Material UI components. I also implemented configurable AB testing hooks for future research (e.g., comparing hint strategies). The system uses localForage for offline storage and supports LTI integration via a custom Express.js middleware. All content is authored in JSON format, enabling easy curation of problems and hints without code changes.
This extension transforms OATutor from a math-focused tutor into a versatile platform for CS education. In the future, I plan to add LLM-powered hint generation and integrate with IDE-like code editors for real-time feedback.