How savblack/plot works
PLOT is a movie and TV discovery and tracking product with web and mobile clients sharing platform-independent domain logic. Users search titles, manage watchlists and custom lists, record viewing history, and use calendar, profile, and social features. Supabase supplies authentication and persistence; TMDB supplies media data. Documented integrations include Plex and Trakt synchronization. The graph emphasizes these runtime paths and the marketing site; source excerpts were partial, so uncertain screen-to-hook wiring is omitted.
Main entry points: App.jsx App shell · main.jsx Web app · useUnifiedSearch.js Unified search · useTraktSync.ts Trakt sync
Components 22
Product clients
- Web app
apps/web/src/main.jsx - App shell
apps/web/src/App.jsx - Search view
apps/web/src/components/SearchView.jsx - History view
apps/web/src/components/HistoryView.jsx - Calendar view
apps/web/src/components/CalendarView.jsx - Mobile app
apps/mobile/app/_layout.tsx - App screens
apps/mobile/app/(app)/_layout.tsx - Marketing site
apps/website/functions/_middleware.js
Shared domain
- Unified search
packages/core/useUnifiedSearch.js - History import
packages/core/importPipeline.js - Watchlist data
packages/core/useWatchlist.js - Calendar data
packages/core/useUpcoming.js - Broadcast guide
packages/core/useBroadcastGuide.js - Trakt sync
apps/mobile/hooks/useTraktSync.ts
Backend services
- Media sync
supabase/functions/media-sync/index.ts - Trakt sync function
supabase/functions/trakt-sync/index.ts
External services
- Supabase
- TMDB
- Plex
- Trakt
- Product analytics
Other components
- Viewer
Connections 26
- Viewer → Web app: uses
- Viewer → Mobile app: uses
- Web app → App shell: renders
- App shell → Search view: renders
- App shell → History view: renders
- App shell → Calendar view: renders
- Mobile app → App screens: opens
- Web app → Unified search: uses shared logic
- Web app → History import: uses shared logic
- Mobile app → History import: uses shared logic
- Search view → Unified search: queries
- Unified search → TMDB: searches titles
- Unified search → Supabase: searches users
- History import → Supabase: reads and writes
- Calendar view → Calendar data: displays
- App shell → Watchlist data: uses
- App shell → Broadcast guide: uses
- Trakt sync → Supabase: reads integration
- Trakt sync → Trakt: authorizes
- Trakt sync → Trakt sync function: calls
- Trakt sync function → Trakt: syncs data
- Trakt sync function → Supabase: persists integration
- Media sync → Plex: syncs titles
- Media sync → Supabase: reads and writes
- Marketing site → Supabase: serves site APIs
- Web app → Product analytics: tracks events