Skip to content

JasonGraber/graber-hub

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

5 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🏠 Graber Hub

A family command center built on a Raspberry Pi. Manage schedules, chores, countdowns, photo slideshows, and Bible verses β€” from a beautiful dark-themed wall display, your phone, or your watch.

License Platform Android Wear OS


✨ What It Does

Web Dashboard Phone App Watch App
πŸ“… Schedule Full-day timeline with progress tracking Add, edit, delete blocks + templates View today's blocks
βœ… Chores Per-kid cards with completion animations Assign and toggle chores Tap to complete
⏳ Countdowns Animated hero countdown with floating dots Manage upcoming events Quick glance
⏱️ Timer Full-screen countdown with alarm Start/stop from anywhere Timer controls
πŸ“– Verses Daily rotation in header Add and manage verses β€”
πŸ“· Photos Ken Burns slideshow with weather overlay Set album + switch modes β€”
πŸ—£οΈ Voice β€” β€” β€”

Voice control works on any Google Home/Nest device via webhooks:

"Hey Google, Aurora finished make bed" "Hey Google, what are Deandre's chores?"


πŸ“Έ Display Modes

The Hub supports three display modes, switchable from the phone app:

  • πŸ–₯️ Dashboard β€” Chores, schedule, countdowns, timer, Bible verse
  • πŸ“· Photos β€” Full-screen Google Photos slideshow with clock, weather, and verse overlay
  • ✨ Auto β€” Photos at night (8 PM–7 AM), dashboard during the day

A live mode indicator appears on both the wall display and the phone app.


πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Raspberry Pi (Hub)              β”‚
β”‚                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚ index.php β”‚  β”‚ api.php  β”‚  β”‚ photos.phpβ”‚ β”‚
β”‚  β”‚ Dashboard β”‚  β”‚ REST API β”‚  β”‚ Slideshow β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                      β”‚                      β”‚
β”‚            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”‚
β”‚            β”‚   data.json       β”‚            β”‚
β”‚            β”‚   photo-settings  β”‚            β”‚
β”‚            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β”‚
β”‚                      β”‚                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”              β”‚
β”‚  β”‚ voice.php β”‚  β”‚ lighttpd   β”‚              β”‚
β”‚  β”‚ Webhooks  β”‚  β”‚ Web Server β”‚              β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
           β”‚ HTTP (WiFi / Tailscale / Cloudflare)
     β”Œβ”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”
     β”‚             β”‚
β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”
β”‚ Android β”‚  β”‚ Wear OS β”‚
β”‚  Phone  β”‚  β”‚  Watch  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ“‹ Prerequisites

  • Raspberry Pi 4 (2GB+ RAM) with Raspbian / Raspberry Pi OS
  • Display β€” DAKboard, any monitor, or a TV in kiosk mode
  • lighttpd with PHP (FastCGI)
  • Cloudflare Tunnel (optional) β€” for remote access and voice webhooks
  • Android phone and/or Wear OS watch for companion apps

πŸš€ Quick Start

1. Clone

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

2. Deploy the web dashboard to your Pi

scp web/{api,index,photos,voice}.php pi@<PI_IP>:/tmp/

# On the Pi:
sudo cp /tmp/{api,index,photos,voice}.php /var/www/html/
sudo chown www-data:www-data /var/www/html/{api,index,photos,voice}.php
sudo mkdir -p /home/pi/graber-hub
sudo chown www-data:www-data /home/pi/graber-hub

The API auto-creates data.json with defaults on first request. To customize kids, copy the example:

scp web/data.example.json pi@<PI_IP>:/home/pi/graber-hub/data.json

3. Point the display browser to your dashboard

http://localhost/index.php

4. Install the companion apps (optional)

Phone app:

cd android && ./gradlew assembleDebug
# APK β†’ android/app/build/outputs/apk/debug/app-debug.apk

Watch app:

cd watch && ./gradlew assembleDebug
adb connect <WATCH_IP>:<PORT>
adb install watch/app/build/outputs/apk/debug/app-debug.apk

πŸ“‘ API Reference

Base URL: http://<PI_IP>/api.php

Endpoint Method Description
/dashboard GET Full dashboard data (kids, chores, schedule, countdowns, verse)
/schedule GET Today's schedule blocks
/schedule POST Add a schedule block
/schedule/{id} PUT Edit a schedule block
/schedule/{id} DELETE Delete a schedule block
/chores GET Today's chores
/chores POST Add a chore
/chores/{id}/toggle POST Toggle chore completion
/chores/{id} DELETE Delete a chore
/kids/{id} PUT Update kid config (name, color)
/countdowns GET/POST List or add countdowns
/countdowns/{id} DELETE Delete a countdown
/timer/start POST Start timer ({ minutes, label })
/timer/stop POST Stop the timer
/timer GET Timer status
/mode GET/POST Get or set display mode
/photo-settings GET/POST Photo slideshow settings
/verses GET/POST List or add Bible verses
/verses/{id} DELETE Delete a verse

πŸ—£οΈ Voice Control

See docs/GOOGLE-ASSISTANT-SETUP.md for the full Google Home / IFTTT setup guide.

Built-in smart features:

  • Fuzzy matching β€” "make the bed" matches "make bed"
  • Nicknames β€” "Lexi" β†’ Alexia, "Dre" β†’ Deandre, "Tru" β†’ Truett
  • Encouraging responses β€” random positive messages on completion
  • All-done celebration β€” special message when a kid finishes everything

🎨 Customization

Kids

Edit data.json to set names, initials, and accent colors:

{
  "kids": [
    { "id": 1, "name": "Aurora", "initial": "A", "color": "#ec5281" },
    { "id": 2, "name": "Deandre", "initial": "D", "color": "#03a9f4" }
  ]
}

Theme

The dashboard uses CSS custom properties β€” easy to retheme:

:root {
  --bg: #0a0a0f;
  --surface: #14141f;
  --accent: #03a9f4;
  --pink: #ec5281;
  --green: #4ade80;
}

Bible Verses

Add via the API or companion app. Verses rotate daily.

Photo Slideshow

  1. Create a shared Google Photos album
  2. Paste the share URL in the companion app
  3. Switch display mode to "Photos" or "Auto"

πŸ“ Project Structure

graber-hub/
β”œβ”€β”€ web/                          # Raspberry Pi dashboard & API
β”‚   β”œβ”€β”€ index.php                 # Dashboard UI (HTML/CSS/JS)
β”‚   β”œβ”€β”€ api.php                   # REST API
β”‚   β”œβ”€β”€ photos.php                # Photo slideshow engine
β”‚   β”œβ”€β”€ voice.php                 # Voice webhook endpoints
β”‚   └── data.example.json         # Example data file
β”œβ”€β”€ android/                      # Phone companion app
β”‚   β”œβ”€β”€ app/src/main/java/...     # Kotlin + Jetpack Compose
β”‚   β”œβ”€β”€ build.gradle.kts
β”‚   └── gradlew
β”œβ”€β”€ watch/                        # Wear OS watch app
β”‚   β”œβ”€β”€ app/src/main/kotlin/...   # Kotlin + Wear Compose
β”‚   β”œβ”€β”€ build.gradle.kts
β”‚   └── gradlew
β”œβ”€β”€ docs/                         # Documentation
β”‚   └── GOOGLE-ASSISTANT-SETUP.md
β”œβ”€β”€ LICENSE
└── README.md

πŸ› οΈ Tech Stack

Component Stack
Web Dashboard PHP, vanilla JS (ES5 for Pi compatibility), CSS3
API PHP with JSON file storage
Phone App Kotlin, Jetpack Compose, Material 3, Retrofit
Watch App Kotlin, Wear Compose, Horologist, Retrofit
Infrastructure lighttpd, Cloudflare Tunnel, Tailscale

🀝 Contributing

This started as a family project. If you want to build something similar:

  1. Fork the repo
  2. Customize kids, colors, schedule templates, and verses
  3. Deploy to your Pi
  4. PRs welcome for features that help other families!

πŸ“„ License

MIT License β€” see LICENSE for details.


Built with love for the Graber family by Jason Graber and Cody.

"Train up a child in the way he should go; even when he is old he will not depart from it." β€” Proverbs 22:6

About

🏠 Family command center dashboard for Raspberry Pi β€” schedules, chores, countdowns, photo slideshow, Bible verses, voice control

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors