Quick Start
Install the published extension from the Chrome Web Store:
https://chromewebstore.google.com/detail/movietrack/jkagnflabbhgejkamhdkeeeeigfhjhje
For local development, build from source:
git clone https://github.com/tianiste/movie-track.git
cd movie-track
npm install
npm run build
Open `chrome://extensions` or `brave://extensions`, enable Developer mode, click Load unpacked, then select the repository folder.
Architecture
MovieTrack is a Manifest V3 extension. The background service worker watches the active focused tab, checks audible state, applies the optional site allowlist, reads generic video playback time when site access allows it, and stores local records before cloud sync.
active audible tab
-> optional site allowlist
-> readable video element
-> local WatchRecord
-> optional Supabase sync
-> popup/settings UI
Supabase Setup
MovieTrack uses Supabase Auth for Google sign-in and Supabase Postgres for synced watch records. The extension contains only public Supabase config.
supabase link --project-ref wyeqtsnjlxixbpnkimmo
supabase db push
Add this Chrome Web Store redirect URL in Supabase Auth URL configuration and Google OAuth:
https://jkagnflabbhgejkamhdkeeeeigfhjhje.chromiumapp.org/supabase-auth
Privacy Guards
- Tracking starts after consent and optional site access.
- Site allowlist mode can limit tracking to domains you choose.
- Records require active audible video playback.
- URLs are trimmed before saving.
- YouTube records keep only the video ID.
- Supabase RLS scopes rows to `auth.uid() = user_id`.
Release Checks
npm run typecheck
npm run verify:publish
The publish verifier checks the package ZIP, secret-risk files, manifest permissions, consent flow, URL minimization, logout/session handling, and RLS migration invariants.