Skip to content

JasonGraber/graber-hub-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

17 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“± Graber Hub β€” Companion App

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.

License Android Kotlin


✨ Features

  • πŸ“… 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.

πŸ—οΈ Tech Stack

  • Kotlin + Jetpack Compose + Material 3
  • MVVM architecture with StateFlow
  • Retrofit for REST API communication
  • Coroutines for async operations
  • Min SDK 26 / Target SDK 34

πŸš€ Getting Started

Prerequisites

  • Android Studio Hedgehog or later
  • JDK 17
  • Android SDK 34

Build

git clone https://github.com/JasonGraber/graber-hub-app.git
cd graber-hub-app
./gradlew assembleDebug

APK output: app/build/outputs/apk/debug/app-debug.apk

Configure

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

πŸ“ Project Structure

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

πŸ”— Related Repos

  • graber-hub β€” Web dashboard & API (runs on Raspberry Pi)
  • graber-hub-watch β€” Wear OS companion for Pixel Watch (coming soon)

πŸ“„ License

MIT License β€” see LICENSE for details.

About

πŸ“± Android companion app for Graber Hub β€” manage your family command center from your phone

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages