How juinaik-1/rave2.0 works
Nook is a browser-based watch-party product with a separate API: people sign in or join rooms, coordinate playback and conversation, and can use voice together. Signed-in users can also select private Drive media or submit eligible URLs for conversion, then share playable streams. The graph separates room collaboration, identity, and media processing from the API’s Drive and stream services. Edges cite excerpted files or documented capabilities; some page-to-hook and backend relationships are supported by the SOURCE INDEX rather than inspected implementation excerpts.
Main entry points: Room.jsx Watch room · App.jsx Routes and access · server.js HTTP API routes · jobs.js Conversion queue
Components 29
Web experience
- Routes and access
src/App.jsx - Room discovery
src/pages/Home.jsx
Room collaboration
- Watch room
src/pages/Room.jsx - Room channel
src/hooks/useRoomChannel.js - Chat state
src/hooks/useChat.js - Chat panel
src/components/Chat.jsx - Playback sync
src/hooks/useVideoSync.js - Video player
src/components/VideoPlayer.jsx - Voice
src/hooks/useVoice.js - Voice panel
src/components/VoicePanel.jsx - Participant list
src/components/UserList.jsx
Identity and access
- Session context
src/context/AuthContext.jsx - Sign-in page
src/pages/SignIn.jsx - API client
src/utils/api.js
Media workflows
- Drive source
src/components/DriveSource.jsx - Drive picker
src/hooks/useDrivePicker.js - Convert page
src/pages/Convert.jsx - Conversion client
src/hooks/useConversion.js
API services
- HTTP API routes
server/server.js - Google and session auth
server/auth.js - Drive authorization
server/driveOAuth.js - Encrypted token store
server/tokenStore.js - Signed media streams
server/streams.js - Media inspection
server/probe.js - Conversion queue
server/jobs.js - Media conversion
server/convert.js
Other components
- Viewer
- Supabase
src/supabase.js - Google services
Connections 37
- Viewer → Routes and access: uses
src/App.jsx - Routes and access → Room discovery: routes to
src/App.jsx - Routes and access → Watch room: routes to
src/App.jsx - Routes and access → Sign-in page: routes to
src/App.jsx - Routes and access → Convert page: protects route
src/App.jsx - Room discovery → Watch room: starts or joins
- Watch room → Room channel: uses
src/pages/Room.jsx - Watch room → Chat state: uses
src/pages/Room.jsx - Watch room → Playback sync: uses
src/pages/Room.jsx - Watch room → Voice: uses
src/pages/Room.jsx - Watch room → Chat panel: renders
src/pages/Room.jsx - Watch room → Video player: renders
src/pages/Room.jsx - Watch room → Voice panel: renders
src/pages/Room.jsx - Watch room → Participant list: renders
src/pages/Room.jsx - Room channel → Supabase: uses
src/hooks/useRoomChannel.js - Chat state → Supabase: uses
src/hooks/useChat.js - Watch room → Session context: uses
src/pages/Room.jsx - Sign-in page → Session context: uses
src/pages/SignIn.jsx - Session context → API client: calls
src/context/AuthContext.jsx - Playback sync → API client: requests stream access
src/hooks/useVideoSync.js - Drive source → Drive picker: uses
src/components/DriveSource.jsx - Convert page → Drive source: renders
src/pages/Convert.jsx - Convert page → Conversion client: uses
src/pages/Convert.jsx - Conversion client → API client: calls
src/hooks/useConversion.js - API client → HTTP API routes: sends API requests
README.md - HTTP API routes → Google and session auth: authenticates
server/server.js - HTTP API routes → Drive authorization: routes Drive operations
server/server.js - HTTP API routes → Signed media streams: registers and serves
server/server.js - HTTP API routes → Conversion queue: creates and cancels
server/server.js - Drive authorization → Encrypted token store: stores encrypted tokens
server/driveOAuth.js - Drive authorization → Google services: authorizes and fetches
server/driveOAuth.js - Google and session auth → Google services: verifies identity
README.md - Signed media streams → Drive authorization: reads Drive media
server/streams.js - Signed media streams → Media inspection: inspects media
server/streams.js - Conversion queue → Media inspection: inspects input
server/jobs.js - Conversion queue → Media conversion: runs conversion
server/jobs.js - Conversion queue → Signed media streams: registers output stream
server/jobs.js