How chadyi/studyontv works
StudyOnTV is an Android-based learning-first screen-time control system for phones, tablets, and TVs. A child completes questions on the controlled device; the learning engine evaluates progress and time rules, then the gate controls access and playback. A parent connects over the local network to manage schedules, question banks, grading, and records. The README documents these product flows; source-index references and excerpts support the internal links shown. Several UI and integration details are documented but their implementations were not sampled.
Main entry points: LearningEngine.kt Learning engine · main.tsx Parent console · GateService.kt Access gate · DeviceRuntime.kt Device runtime
Components 19
Learning and rewards
- Learning screen
app/native/app/src/main/java/com/studyontv/tv/GateOverlay.kt - Learning engine
app/native/app/src/main/java/com/studyontv/tv/LearningEngine.kt - Question bank
parent-ui/src/QuestionBank.tsx - Answer grading
app/native/app/src/main/java/com/studyontv/tv/GradingService.kt - Study records
app/native/app/src/main/java/com/studyontv/tv/LocalStore.kt
Device control
- Access gate
app/native/app/src/main/java/com/studyontv/tv/GateService.kt - Time rules
app/native/app/src/main/java/com/studyontv/tv/TimePolicy.kt - Foreground monitor
app/native/app/src/main/java/com/studyontv/tv/Foreground.kt - Playback control
app/native/app/src/main/java/com/studyontv/tv/MediaPause.kt - Settings protection
app/native/app/src/main/java/com/studyontv/tv/WatchAccessibilityService.kt
Parent management
- Parent console
parent-ui/src/main.tsx - Console API
parent-ui/src/api.ts - Rules and schedules
parent-ui/src/RulesPage.tsx - Review console
parent-ui/src/GradingPage.tsx
Local platform
- Device runtime
app/native/app/src/main/java/com/studyontv/tv/DeviceRuntime.kt - LAN server
app/native/app/src/main/java/com/studyontv/tv/LanServer.kt
Other components
- Child
- Parent
- Configured AI service
Connections 21
- Child → Learning screen: answers on
README.md - Learning screen → Learning engine: submits answers
- Learning engine → Study records: reads and writes
app/native/app/src/main/java/com/studyontv/tv/LearningEngine.kt - Learning engine → Time rules: uses policy
app/native/app/src/main/java/com/studyontv/tv/LearningEngine.kt - Learning engine → Answer grading: queues reviews
app/native/app/src/main/java/com/studyontv/tv/GradingService.kt - Answer grading → Study records: reads and writes
app/native/app/src/main/java/com/studyontv/tv/GradingService.kt - Answer grading → Configured AI service: sends submissions
README.md - Access gate → Learning engine: checks status
app/native/app/src/main/java/com/studyontv/tv/GateService.kt - Access gate → Learning screen: shows gate
app/native/app/src/main/java/com/studyontv/tv/GateService.kt - Access gate → Playback control: pauses playback
app/native/app/src/main/java/com/studyontv/tv/GateService.kt - Access gate → Foreground monitor: checks foreground
app/native/app/src/main/java/com/studyontv/tv/GateService.kt - Settings protection → Access gate: ensures service
app/native/app/src/main/java/com/studyontv/tv/WatchAccessibilityService.kt - Parent → Parent console: manages device
README.md - Parent console → Console API: uses API
parent-ui/src/main.tsx - Parent console → Question bank: opens bank
parent-ui/src/main.tsx - Parent console → Rules and schedules: opens rules
parent-ui/src/main.tsx - Parent console → Review console: opens grading
parent-ui/src/main.tsx - Console API → LAN server: calls over LAN
README.md - Device runtime → LAN server: starts server
app/native/app/src/main/java/com/studyontv/tv/DeviceRuntime.kt - Device runtime → Study records: initializes store
app/native/app/src/main/java/com/studyontv/tv/DeviceRuntime.kt - Device runtime → Learning engine: initializes engine
app/native/app/src/main/java/com/studyontv/tv/DeviceRuntime.kt