How aparsi0/athan_app works
Athan App is a cross-platform prayer-time and audio application, with a separate browser/PWA version. The desktop workflow detects location, obtains prayer times, schedules prayer and reminder events, then plays audio; the tray and dashboard expose status and controls. The README also documents web Quran, radio, and sky features. Desktop connections are grounded in excerpts or the source index; browser internals were not sampled, so their relationships are shown as unverified dashed edges.
Main entry points: main.py Desktop Controller · app.js Web App · main_window.py Dashboard UI · system_tray.py System Tray
Components 28
Desktop Runtime
- Desktop Controller
main.py - Headless Controller
main_headless.py - System Tray
gui/system_tray.py - Dashboard UI
gui/main_window.py - Settings UI
gui/settings_window.py - Dashboard Commands
core/app_commands.py - Configuration
config/settings.py - Runtime Paths
utils/app_paths.py
Prayer Services
- Location Detection
core/location_service.py - IP Geolocation
- Prayer Times
core/prayer_times.py - Aladhan API
- Event Scheduler
core/scheduler.py
Audio Features
- Prayer Audio
core/audio_player.py - VLC Playback
- Quran Player
core/quran_player.py - Reciter Library
core/quran_library.py
Browser App
- Web App
docs/js/app.js - Web Location
docs/js/location.js - Web Prayer Times
docs/js/prayer-times.js - Web Scheduler
docs/js/scheduler.js - Web Audio
docs/js/audio.js - Quran Tab
docs/js/reciters.js - Living Sky
docs/js/scene.js - Cairo Radio
docs/js/audio-players.js - PWA Worker
docs/sw.js
Other components
- User
- Browser User
Connections 30
- User → Desktop Controller: starts
README.md - Desktop Controller → Location Detection: detects location
main.py - Location Detection → IP Geolocation: queries providers
core/location_service.py - Desktop Controller → Configuration: loads preferences
main.py - Desktop Controller → Prayer Times: requests times
main.py - Prayer Times → Aladhan API: fetches times
core/prayer_times.py - Desktop Controller → Event Scheduler: configures schedule
main.py - Event Scheduler → Prayer Times: refreshes times
core/scheduler.py - Desktop Controller → Prayer Audio: sets up playback
main.py - Prayer Audio → VLC Playback: plays audio
core/audio_player.py - Desktop Controller → Quran Player: starts Quran
main.py - Quran Player → Reciter Library: reads reciters
core/quran_player.py - Desktop Controller → System Tray: starts tray
main.py - System Tray → Dashboard UI: launches window
gui/system_tray.py - System Tray → Desktop Controller: requests status
main.py - Dashboard UI → Quran Player: controls playback
gui/main_window.py - Dashboard UI → Settings UI: offers settings
- Dashboard UI → Dashboard Commands: writes commands
core/app_commands.py - Dashboard Commands → Desktop Controller: consumed by daemon
core/app_commands.py - Desktop Controller → Headless Controller: alternative runtime
- Configuration → Runtime Paths: uses config paths
config/settings.py - Browser User → Web App: opens app
README.md - Web App → Web Location: uses location
- Web App → Web Prayer Times: shows prayer times
- Web App → Web Scheduler: schedules audio
- Web App → Web Audio: plays reminders
- Web App → Quran Tab: offers Quran
- Web App → Living Sky: shows sky
- Web App → Cairo Radio: offers radio
- Web App → PWA Worker: installs as PWA