Capstone project. I'm ngl it's vibe-coded and it's only here so I can mess around with it
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Create new README.md

+75
+75
README.md
··· 1 + # UXET 2 + 3 + **UX Evaluation Tool** — a browser-based framework for running usability tests with eye-tracking, interaction capture, and heatmap generation. Load any web app, give a user a task, and get back a full session debrief with gaze heatmaps and interaction stats. 4 + 5 + ## What it does 6 + 7 + 1. **Load** a testable web app into a sandboxed iframe. 8 + 2. **Calibrate** eye-tracking via webcam (powered by [WebGazer](https://webgazer.cs.brown.edu/)). 9 + 3. **Record** a session — gaze data, mouse movement, clicks, keypresses, and scroll events are all captured while the user completes a task. 10 + 4. **Debrief** — when the task is done (or a win condition fires automatically), UXET renders per-screen gaze heatmaps and a full stats summary. 11 + 5. **Export** the raw session data as JSON for further analysis. 12 + 13 + ## Getting started 14 + 15 + UXET is a static site — no build step, no `npm install`. You just need a local HTTP server. 16 + 17 + ### Start the server 18 + 19 + ```bash 20 + ./scripts/server-tui.sh 21 + ``` 22 + 23 + This opens an interactive menu where you can: 24 + 25 + | Option | What it does | 26 + |--------|-------------| 27 + | **Start server** | Launches a Python HTTP server on a port you choose (default `8080`) | 28 + | **Stop managed server** | Gracefully kills the server UXET started | 29 + | **Status** | Shows whether the server is running, on which port, and its PID | 30 + | **Show log tail** | Prints the last 20 lines of the server log | 31 + | **Quit** | Exits the menu (the server keeps running in the background) | 32 + 33 + Once the server is up, open the URL it prints (usually `http://127.0.0.1:8080`) in your browser. 34 + 35 + > **Requires:** `python3` (used for `python3 -m http.server`). That's it. 36 + 37 + ### Run a test 38 + 39 + 1. Pick an app from the dropdown. 40 + 2. Click **Load App** — this launches eye-tracking calibration. 41 + 3. Follow the calibration prompts (look at each dot and click it). 42 + 4. When calibration passes, click **Start Test** to begin recording. 43 + 5. Complete the task. The session ends automatically when the win condition is met, or press **Shift+Escape** to end it manually. 44 + 6. Review the debrief screen — heatmaps, timing, click counts, fixation stats, etc. 45 + 7. Click **Export Data** to download the session as JSON. 46 + 47 + ### Debug mode 48 + 49 + Expand **Debug Controls** on the setup screen to: 50 + 51 + - **Skip Calibration** — bypass eye-tracking calibration entirely. 52 + - **Use mouse as gaze** — substitute mouse position for eye-tracking (useful for development and demos without a webcam). 53 + - **End Test** — force-stop a running session. 54 + 55 + ## Adding your own apps 56 + 57 + Drop your app into the `testable-apps/` directory and add a new `<option>` to the select in `index.html`: 58 + 59 + ```html 60 + <option 61 + value="testable-apps/your-app/index.html" 62 + data-task="Describe the task for the user" 63 + data-win="selector:#success-element"> 64 + Your App Name 65 + </option> 66 + ``` 67 + 68 + The `data-win` attribute defines when the test ends automatically. Supported formats: 69 + 70 + - `selector:.some-class` — fires when the CSS selector matches a visible element. 71 + - `text:Some text` — fires when the specified text appears in the page. 72 + 73 + ## License 74 + 75 + Unlicensed — do whatever you want with it.