Can't decide what to eat? Dabbirni spins the wheel for you. Add your restaurants and meals, pick a meal time (Breakfast / Lunch / Dinner), and let the app randomly pick what you're having today — with an animated reel, confetti, and haptics.
This is the Android edition, a feature-for-feature port of the iOS app, built with Jetpack Compose and Room. Like the original it is fully screen-reader (TalkBack) compatible and localized in English and Arabic with full RTL support.
- Meal-time tabs — filter everything by Breakfast, Lunch, or Dinner.
- Restaurants & meals — meals can belong to a restaurant or stand alone.
- Spin All — randomly pick from every option in the current meal time.
- Spin a restaurant — narrow the pick to one restaurant's meals (swipe a row, or use the TalkBack "Spin" action).
- Animated spin — an easing reel, success haptics, and a confetti celebration.
- Swipe actions — swipe to delete; swipe a restaurant to spin it. The same actions are exposed to TalkBack as custom accessibility actions.
- Accessibility first — labels, hints, headings, and spoken announcements for the spin start and result.
- Localized — English and Arabic (العربية), RTL-aware.
- Light & dark themes — a branded orange palette that follows the system setting.
| Layer | Pieces |
|---|---|
| Data | Room (Restaurant, Meal, cascade relation), DabbirniDao, Converters |
| State | DabbirniViewModel (Flows), SpinController (the reel/result state machine) |
| Spin | SpinResult — builds the spinnable options for a category |
| UI | Compose screens: Home, Restaurant detail, Add restaurant, Add meal, Spin overlay |
./gradlew assembleDebug
Requires the Android SDK and a JDK 11+. Minimum SDK 28, target SDK 36.