EyePointer is a hackathon MVP for hospital patients with limited or no arm mobility. It uses WebGazer.js in the browser so a patient can look at large buttons, hold gaze for 3 seconds, and trigger requests without touching the screen.
- React + TypeScript + Tailwind frontend in
client - Minimal Express backend in
server - Calibration screen, patient dashboard, emergency state, and caretaker event feed
- WebGazer gaze dot and 3-second dwell-to-click behavior
- In-memory event logging with
POST /api/action,POST /api/emergency, andGET /api/events
client: Vite frontendserver: Express API with in-memory storageassets: optional screenshots/placeholders
- Install frontend dependencies:
cd client
npm install- Install backend dependencies:
cd ../server
npm install- Start the Express server in one terminal:
cd server
npm run dev- Start the Vite frontend in a second terminal:
cd client
npm run dev- Open the local Vite URL, allow webcam access, run the calibration step, and look at a button for 3 full seconds to trigger it.
- Start on the calibration screen and explain webcam-based eye tracking.
- Enter the dashboard and allow WebGazer to access the webcam.
- Watch the gaze dot move with the patient’s eyes.
- Hold gaze on a button until the dwell bar fills over 3 seconds.
- Confirm the action appears in the status panel and caretaker event list.
- Trigger
Emergency Alertto switch the UI into the emergency state.
- WebGazer.js is loaded from the official project site:
https://webgazer.cs.brown.edu/webgazer.js - Event storage is in memory only. Restarting the server clears the caretaker log.
- For local development, the Vite dev server proxies
/apirequests tohttp://localhost:4000.