Files
jamshalat-masjid-screen/README.md

120 lines
3.5 KiB
Markdown

# 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](/Users/dwindown/CascadeProjects/jamshalat-masjid-screen/PRD.md).
## Current Stack
- Flutter
- Riverpod for app state
- Hive for local persistence
- `http` for remote APIs
- `wakelock_plus` for always-on screen behavior
- `audioplayers` for adzan and iqomah sounds
## Current Architecture
The current implementation is a pragmatic Flutter app centered around:
- `lib/main.dart`: app bootstrap, Hive initialization, fullscreen setup
- `lib/providers.dart`: clock stream, settings state, screen-state machine, slideshow rotation
- `lib/data/local/models.dart`: Hive models and adapters
- `lib/data/services/`: sync, prayer API, background API, sound service
- `lib/features/home/`: public display screens
- `lib/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
```bash
flutter pub get
flutter run
```
### Analyze
```bash
flutter analyze
```
### Test
```bash
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.dart` is broken placeholder boilerplate and currently fails `flutter test`
- Android manifest does not yet declare `INTERNET`, which will block API-dependent features on device
- there are multiple deprecated `withOpacity` usages reported by `flutter 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
1. Fix test baseline so `flutter test` becomes useful again.
2. Add Android `INTERNET` permission.
3. Remove broken placeholders and obvious UI/data defects.
4. Stabilize schedule sync and runtime state transitions.
5. 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.