How unweidlykhan349/sbreader works
SB Reader is a static Science Bowl practice site. A learner searches the question catalog or opens Play, selects a set or question mode, reads and answers questions, then can review or star them; multiplayer extends practice to online rooms. Major branches include tournament and packet browsing, accounts and progress, reports, and question statistics. Optional Supabase services support accounts, room listings/relay, and reports; stars are kept per device. Relationships below are limited to README statements and shown source calls; unsampled wiring is not inferred.
Main entry points: solo.js Solo Trainer · multiplayer.js Multiplayer Rooms · stats.js Question Statistics · data.js Shared Data Layer
Components 28
Practice and Play
- Solo Trainer
js/solo.js - Question Reveal
js/reveal.js - Answer Grading
js/answer-check.js - Multiplayer Rooms
js/multiplayer.js - Room Listing
js/rooms.js - Peer Connections
js/peer.js - Multiplayer Rules
js/mp-rules.js
Question Library
- Question Catalog
js/catalog.js - Question Bank
data/bank/index.json - Set and Packet Pages
js/set-pages.js
Accounts and Progress
- Starred Questions
js/stars.js - Account Service
js/account-core.js - Sign-in Pages
js/auth-pages.js - Account Page
js/account-page.js - Account UI
js/account.js - Question Statistics
js/stats.js - User Progress
js/user-stats.js - Statistics Graphs
js/graphs.js - Question Stats Logic
js/question-stats.js
Optional Services
- Question Reports
js/reports.js - Supabase
supabase/schema.sql - TURN Credentials
supabase/functions/turn-credentials/index.ts
Shared Runtime
- Home and Site
js/site.js - Shared Data Layer
js/data.js - Play Utilities
js/play-common.js - Site Configuration
js/config.js - Frequency Lists
js/frequency-list.js
Other components
- Learner
Connections 27
- Learner → Question Catalog: searches
README.md - Question Catalog → Question Bank: searches
README.md - Learner → Solo Trainer: practices
README.md - Solo Trainer → Shared Data Layer: loads questions
js/solo.js - Solo Trainer → Question Reveal: starts reveal
js/solo.js - Learner → Set and Packet Pages: browses sets
README.md - Set and Packet Pages → Question Bank: loads set
README.md - Learner → Multiplayer Rooms: joins room
README.md - Multiplayer Rooms → Peer Connections: connects peers
README.md - Multiplayer Rooms → Multiplayer Rules: uses rules
js/multiplayer.js - Learner → Starred Questions: stars questions
README.md - Learner → Sign-in Pages: signs in
README.md - Sign-in Pages → Account Service: submits credentials
js/auth-pages.js - Account UI → Account Service: uses account service
- Learner → Question Reports: reports question
README.md - Question Reports → Supabase: sends reports
README.md - Room Listing → Supabase: uses room services
README.md - Multiplayer Rooms → TURN Credentials: requests TURN login
README.md - Shared Data Layer → Question Bank: loads question data
README.md - Solo Trainer → Play Utilities: uses play helpers
- Learner → Question Statistics: reviews statistics
README.md - Question Statistics → Statistics Graphs: renders graphs
- Question Statistics → Question Stats Logic: uses question stats
- Learner → Account Page: views account
README.md - Account Page → User Progress: shows progress
- Shared Data Layer → Frequency Lists: provides frequency data
- Home and Site → Site Configuration: uses configuration