Inspiration

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

Inspiration… ChoreWheel was inspired by a universal roommate problem: chores are shared, but fairness rarely is. After watching conflict come from “I did it last time” arguments, I wanted a system that makes fairness automatic—then turns doing chores into something people actually enjoy.

Headline ChoreWheel — a fair chore spin wheel that rewards collaboration (offline-first + optional real-time sync).

What I learned / How I built it… I built ChoreWheel as an offline-first React + TypeScript web app. The core idea is a fair-weighted spin wheel: the more times a chore has been completed, the less likely it is to be re-assigned, reducing repeat burdens. Chore completion updates a points + streak economy, records progress in a history log, and enables peer-to-peer trading when schedules collide.

For technical realism, I designed state around a single React RoomContext, using localStorage as the source of truth and treating Firebase as an optional synchronization layer. To prevent sync loops, each browser tab uses a unique TAB_ID, and updates merge with last-write-wins timestamps. Finally, I added PWA support so the experience works even with poor connectivity.

Challenges… The hardest part was making real-time sync safe without a backend server: handling echo prevention, conflict resolution, and keeping the app responsive while animating the wheel at 60fps.

Built with React 19 + TypeScript Vite 8 Custom sketchbook CSS design system Canvas API (wheel) + Web Audio API (sounds) + canvas-confetti PWA (service worker + web manifest) localStorage (offline-first) Optional Firebase Realtime Database (room sync) Try it out links Demo URL: https://uoe-summer-of-codechorewheel.netlify.app Default room code: HOMEY9 GitHub repo: add your repo link here (if you share it, I’ll format it)

What we learned

What's next for ChoreWheel

Built With

Share this project:

Updates