This repository is the frontend to Scribe, a workspace for saving timestamped notes on YouTube videos. Paste a link, open the player, and capture notes that stay tied to exact playback moments.
- Loads standard YouTube links, short links, and Shorts URLs.
- Lets you save timestamped notes while a video plays.
- Supports quick seeking by clicking saved notes.
- Local-first storage Dexie/IndexedDB.
- Implements OAuth authentication to sync notes to Postgre through a Spring Boot API.
src/services/: note storage, YouTube metadata, and API accesssrc/Landing.tsx: landing page and URL entry flowsrc/Home.tsx: main video + notes workspacesrc/ChatBox.tsx: notes list and composersrc/LibraryPanel.tsx: saved-session drawersrc/WorkspaceSidebar.tsx: playback controls and shortcutssrc/utils/: URL parsing and formatting helperstests/: Bun-based unit tests
VITE_API_BASE_URL=http://localhost:XXXX
VITE_YOUTUBE_API_KEY=your_youtube_api_keybun install
bun run dev
bun run lint
bun run build
bun testCurrent tests cover:
- YouTube URL parsing in
tests/extract-id.test.ts - Timestamp formatting in
tests/format-time.test.ts - Title behavior expectations in
tests/home-title.test.ts
- Local notes are grouped by
videoId. - Signed-in users use the API-backed note service instead of local storage.
- The project is set up for client-side routing and Vercel-style deployment.