Android companion app for Graber Hub, a family command center running on a Raspberry Pi.
Control your family's schedule, chores, countdowns, and display mode β all from your phone.
- π Schedule β View, add, edit, and delete daily schedule blocks with emoji and time pickers. Includes school day, weekend, and summer templates.
- β Chores β Manage per-kid chores with tap-to-complete. Assign chores to any kid with emoji categories.
- β³ Countdowns β Track upcoming events with animated countdown cards.
- β±οΈ Timer β Start countdown timers on the Hub display with alarm sound.
- πΊ Display Mode β Switch the Hub between Dashboard, Photos, and Auto modes. Persistent mode indicator shows current state on every screen.
- πΌοΈ Photo Album β Configure Google Photos album for the Hub's photo slideshow.
- π Bible Verses β Add and manage daily Bible verses shown on the Hub.
- π¨ Kid Colors β Customize each kid's accent color.
- π‘ Network β Auto-connects via Home WiFi or Tailscale with one-tap switching.
- Kotlin + Jetpack Compose + Material 3
- MVVM architecture with StateFlow
- Retrofit for REST API communication
- Coroutines for async operations
- Min SDK 26 / Target SDK 34
- Android Studio Hedgehog or later
- JDK 17
- Android SDK 34
git clone https://github.com/JasonGraber/graber-hub-app.git
cd graber-hub-app
./gradlew assembleDebugAPK output: app/build/outputs/apk/debug/app-debug.apk
On first launch, the app connects to the Hub at 192.168.86.43 (default). Use Settings to:
- Switch between Home WiFi and Tailscale networks
- Enter a custom server URL
- Test connection
app/src/main/java/com/graberhub/companion/
βββ MainActivity.kt # App entry, navigation, display mode indicator
βββ alarm/AlarmService.kt # Timer alarm foreground service
βββ data/
β βββ models/Models.kt # Data classes (Kid, ScheduleBlock, Chore, etc.)
β βββ prefs/PrefsManager.kt # SharedPreferences for server URL & kid colors
βββ network/
β βββ ApiService.kt # Retrofit API interface
β βββ RetrofitClient.kt # Retrofit singleton with auto-init
βββ ui/
β βββ components/ # Reusable composables
β β βββ CommonComponents.kt # Time pickers, emoji picker
β β βββ ColorPickerDialog.kt # Kid color customization
β β βββ DisplayModeIndicator.kt # Global display mode chip
β β βββ EmojiPicker.kt # Emoji selection grid
β βββ navigation/NavGraph.kt # Navigation routes
β βββ screens/ # Feature screens
β β βββ ScheduleScreen.kt
β β βββ ChoresScreen.kt
β β βββ CountdownsScreen.kt
β β βββ TimerScreen.kt
β β βββ SettingsScreen.kt
β βββ theme/ # Material 3 theme (colors, typography)
βββ viewmodel/MainViewModel.kt # Shared ViewModel for all screens
- graber-hub β Web dashboard & API (runs on Raspberry Pi)
- graber-hub-watch β Wear OS companion for Pixel Watch (coming soon)
MIT License β see LICENSE for details.