Overview

This is a retrospective for my CS113 trimester work. Every claim below points to evidence in the commit history so the post is auditable and easy to expand later.

Primary focus this trimester: implementing the site-wide nodcursor accessibility feature, integrating head-tracking into gamification (nod-driven games), and helping with the calendar issue integration.

What I worked on (short table)

Workstream Short description
NodCursor & Preferences Site-wide head-tracking cursor, calibration manager, persistence, Theme/Preferences integration
Gamification (Nod Games) Maze & Empathy player integration using head-tracking as input
Calendar issue integration Assisted calendar issue/Kanban integration

CS113 Objective Matrix

Below I map course objectives to what I implemented and point to commits that demonstrate each objective. These links cite commits authored by aadibhat09 in the local pages-fork repo (Mar–May 2026).

Objective What I demonstrated Evidence (commit links in pages-fork)
Data Structures Modeled calibration objects, preferences objects, and game state (walls, levels) as structured objects rather than scattered primitives. 36aed05c (head-tracking prefs persist), 6e7dcee6 (nod game initial)
Collections Stored calibration captures, theme presets, and game-level wall lists; used arrays and maps to manage these collections. 568d8a36 (head tracking beta), 7e0cb65d (NOD game complete)
Lists / Queues Ordered calibration capture flow and level progression in games (L1→L3). 7301db2e (calibration POST working), 6e7dcee6 (nod game initial)
OOP / MVC Single-responsibility classes for theme, translation, TTS, nodcursor calibration/controller, and game objects. 36aed05c (cross-page prefs), 568d8a36 (dashboard beta)
Algorithms Head raw→viewport mapping, smoothing filter, blink-as-click detection, collision detection for maze, and exit detection. 8e27b109 (blink-to-click), 6e7dcee6 (game movement & collision)
Version Control Kept work in small, traceable commits during Mar–May 2026 for pages-fork development. 05d19bf6 (merge nod-game), 0722aea4 (merge PR)
Testing Added small test commits and stabilization (modal fixes, gameplay tests). b9e4e266 (modal fix), 7207e175 (test)
Build Tools Kept the site runnable locally and merged feature branches into main so previews worked. 0722aea4, 05d19bf6
Debugging Iterated through cross-page integration issues and UI toggle bugs. 4c161d0a (fixes), a4b313cc (improve toggle)
API Development Implemented calibration POST/GET endpoints and wired frontend calls for calibration persistence. 7301db2e (POST working), 2e92c853 (GET works)
Database Integration Saved calibration payloads and preferences server-side when available. 7301db2e, 36aed05c
Deployment / Local Preview Merged feature branches and PRs to keep the preview environment up-to-date. 26693214, 0722aea4
Documentation Wrote docs and README updates describing preferences and calibration flows. 12cc35d4 (documentation changes)
Blog Portfolio Added infographics and portfolio notes showing progress on nodcursor and gamification. f7274adc (NodCursor Infograph), 1e1a35da (gamify 2019 4)
Project Impact Brought accessibility and gamification together so authored calendar items can launch playable nod-driven experiences. 6e7dcee6 (nod game initial), 8e27b109 (blink-to-click)
Ethical Considerations Calibration & preferences saved locally by default; backend saving requires login and explicit save operations. 7301db2e, 36aed05c

Main Project Highlights

1) NodCursor: Accessibility built as system

What: A site-wide head-tracking cursor implemented as a small, SRP-driven module. The system includes calibration capture, smoothing, blink-to-click detection, an injected cursor UI element, persistence (local + optional backend), and an API surface via window.SitePreferences.

Why it matters: This turns head movement into a first-class input method across the site without invasive changes to individual pages. The calibration manager keeps personalized mappings safe and reloadable per user.

Key files and code (in this repo): userpreferences.js, preferences.js: search for NodCursor, NodCursorController, and NodCursorCalibrationManager.

Representative commits and notes: pages-fork commits in Mar–May 2026 cited above (blink, calibration, preferences, merges).

2) Gamification: Nod-driven games

What: I built GameLevelNod (maze) and adapted EmpathyEpicPlayer to work with head/mouse input. The maze uses wall arrays, collision detection, level progression, and a HUD with restart/score logic.

Why it matters: It demonstrates a real gameplay loop that can be controlled by the accessibility feature: opening learning-by-play opportunities for students who rely on alternative input.

Key files: GameLevelNod (MazeRenderer, MazePlayer, GameHUD), EmpathyEpicPlayer.

3) Calendar integration support

What: Integrated GitHub Issues and Kanban board tracking with the OCS calendar, and debugged errors that arose from the integration.

Representative commits: calendar and UI progress across Apr–May 2026: referenced above in the table.

4) Ethics & privacy

Approach: Calibration and personal preferences default to local storage; backend save/load is optional and gated by login checks; the reset flow clears local storage keys. This minimizes inadvertent sharing of calibration metadata.