JamShalat Masjid Screen
Smart digital prayer clock and mosque signage app built with Flutter for Android TV boxes and landscape displays.
Purpose
This app is meant to run continuously inside a mosque as a full-screen prayer information display. It combines:
- live clock and daily prayer schedule
- pre-adzan and adzan alert states
- iqomah countdown flow
- Friday (
Jumat) special screens - black screen during prayer
- slideshow and branded background support
- local admin panel for changing mosque identity, timing, and appearance settings
The product direction is documented in PRD.md.
Current Stack
- Flutter
- Riverpod for app state
- Hive for local persistence
httpfor remote APIswakelock_plusfor always-on screen behavioraudioplayersfor adzan and iqomah sounds
Current Architecture
The current implementation is a pragmatic Flutter app centered around:
lib/main.dart: app bootstrap, Hive initialization, fullscreen setuplib/providers.dart: clock stream, settings state, screen-state machine, slideshow rotationlib/data/local/models.dart: Hive models and adapterslib/data/services/: sync, prayer API, background API, sound servicelib/features/home/: public display screenslib/features/admin/: settings/admin panel
This is not yet a strict Clean Architecture / MVVM implementation from the PRD. It is a working product foundation optimized for iteration speed.
Implemented Screens
- Main screen
- Slideshow screen
- Adzan alert screen
- Iqomah countdown screen
- Friday preparation screen
- Friday khutbah screen
- Black screen during prayer
- Admin settings screen
Data Sources
- Prayer times: MyQuran sholat API
- Background images: Unsplash API
The app is designed to behave offline-first after schedule data has been synced and stored locally.
Assets
Included assets currently used by the app:
- fonts: Plus Jakarta Sans, Manrope
- sounds:
beep.mp3,3-detik-countdown.mp3 - images: app icon and user-configured local slideshow/background images
Local Development
Requirements
- Flutter SDK installed and available in
PATH - Android toolchain if building APKs
Run
flutter pub get
flutter run
Analyze
flutter analyze
Test
flutter test
Current Stabilization Status
The app is in a workable development state, but not yet fully stabilized.
Known issues at the time of writing:
test/widget_test.dartis broken placeholder boilerplate and currently failsflutter test- Android manifest does not yet declare
INTERNET, which will block API-dependent features on device - there are multiple deprecated
withOpacityusages reported byflutter analyze - some placeholders are still hardcoded, including Hijri date text in Friday-related screens
- README and repo hygiene were incomplete and are being normalized
Immediate Priorities
- Fix test baseline so
flutter testbecomes useful again. - Add Android
INTERNETpermission. - Remove broken placeholders and obvious UI/data defects.
- Stabilize schedule sync and runtime state transitions.
- Continue feature work from the PRD after the baseline is reliable.
Notes About Git
This workspace currently does not contain a local .git directory even though a remote repository exists:
https://git.backoffice.biz.id/dwindown/jamshalat-masjid-screen.git
If needed, the local folder can be attached to that remote in a follow-up step.