Documentation

Install, build, verify, ship.

Docs follow the same flow as GitHub project docs: quick start first, architecture next, release checks last.

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.