InfoDiet runs as a Chrome MV3 service worker that categorizes every site you visit into one of 8 content categories and computes a weekly Information Quality Score — your ratio of educational vs entertainment content.
The technically interesting part was building accurate background time tracking under MV3 constraints. Chrome's service workers are killed after ~30s of inactivity, wiping any module-level state. I solved this using Chrome's session storage API to persist active tab state across worker restarts, with a 1-minute alarm to resync against the actual active tab when the worker wakes up.
Stack: React + TypeScript extension, Next.js backend on Vercel, MongoDB Atlas, Stripe billing.
Happy to answer technical questions about the MV3 architecture or the category classification approach.
https://www.getinfodiet.app/ - 7 day free trial, no credit card required.