How 0noxtackore/radio-ebenezer-online works
Radio Ebenezer Online is a listener-facing radio web app, with an Android shell also present. The main workflow initializes navigation and the live player, renders the service calendar and upcoming-event notifications, and lets listeners record attendance for gamification. Separate branches cover connectivity recovery and YouTube event thumbnails. The graph follows the sampled TypeScript entry point and module references; Android details are limited to the indexed MainActivity–ShareBridge relationship, and the README documents the stream and product capabilities.
Main entry points: main.ts App initialization · player.ts Live audio player · calendar.ts Service calendar · notifications.ts Event notifications
Components 21
Web application
- App initialization
src/main.ts - Navigation
src/components/navigation.ts
Services and engagement
- Service calendar
src/components/calendar.ts - Event notifications
src/components/notifications.ts - Date utilities
src/utils/date.ts - Gamification profile
src/components/gamification.ts - Attendance and achievements
src/state/gamification.ts - YouTube lookup
src/utils/youtube.ts
Listening and connectivity
- Live audio player
src/components/player.ts - Volume controls
src/components/volume.ts - Disc artwork
src/components/disc.ts - Connectivity monitoring
src/components/network.ts
Shared runtime
- App configuration
src/config/constants.ts - Player app state
src/state/app-state.ts - DOM selectors
src/utils/dom.ts - Domain types
src/types/index.ts
Android shell
- Android activity
android/app/src/main/java/com/ebenezer/radio/MainActivity.java - Share bridge
android/app/src/main/java/com/ebenezer/radio/ShareBridge.java
Other components
- Listener
- Radio stream
- YouTube RSS and API
Connections 24
- Listener → App initialization: opens app
README.md - App initialization → Navigation: initializes
src/main.ts - App initialization → Live audio player: initializes
src/main.ts - App initialization → Disc artwork: initializes
src/main.ts - App initialization → Service calendar: renders
src/main.ts - App initialization → Event notifications: updates
src/main.ts - App initialization → Connectivity monitoring: sets up
src/main.ts - App initialization → Gamification profile: renders
src/main.ts - Service calendar → Attendance and achievements: loads attendance
src/components/calendar.ts - Gamification profile → Attendance and achievements: records attendance
src/components/gamification.ts - Event notifications → Date utilities: formats countdown
src/components/notifications.ts - Event notifications → YouTube lookup: requests thumbnails
src/components/notifications.ts - YouTube lookup → YouTube RSS and API: fetches feed or API
src/utils/youtube.ts - Live audio player → Radio stream: plays stream
README.md - Live audio player → App configuration: reads stream settings
src/components/player.ts - Live audio player → Player app state: updates playback state
src/components/player.ts - Live audio player → DOM selectors: uses selectors
src/components/player.ts - Volume controls → Player app state: tracks volume
src/components/volume.ts - Volume controls → App configuration: uses icons
src/components/volume.ts - Service calendar → App configuration: reads events
src/components/calendar.ts - Service calendar → Date utilities: uses date labels
src/components/calendar.ts - Event notifications → App configuration: reads events
src/components/notifications.ts - DOM selectors → Domain types: uses selector types
src/utils/dom.ts - Android activity → Share bridge: references bridge
android/app/src/main/java/com/ebenezer/radio/MainActivity.java