A wall-mountable home dashboard with news, family calendar, stocks, weather, energy prices, music control, and more. Originally built for a 24" touchscreen on a Raspberry Pi; now also available as a native Android app for tablets.
Feel free to fork, file feature requests, send pull requests, or share ideas.
The active version. Easiest to install: grab a prebuilt APK and sideload it.
- Download the latest
homeboard-vX.Y.Z.apkfrom Releases. - Sideload to your tablet — either copy the APK over and tap it in the tablet's file manager, or:
adb install homeboard-vX.Y.Z.apk
- Open the app, walk through Settings to configure services (weather, calendar, Tibber, Sonos, news, etc.).
For build-from-source instructions, contributing, and developer docs see reactnative/README.md.
The React Native app rendered in a browser via react-native-web, served by a small Node server with a CORS proxy and UDP bridge, so it has full feature parity with the Android version (Sonos discovery, LAN settings sync, all widgets). Runs as a Chromium kiosk on a Raspberry Pi 4 with a Dell P2418HT 24" touchscreen, or on any Linux box with Node 20+ and Chromium.
See web/README.md for installation, migration from the legacy app, and development docs. The base system setup (Chromium, X11, nvm, pm2, splash screen) in the legacy section below still applies to a fresh Pi.
The original version: a Vue/Framework7 web app served by a Node + socket.io backend, run as a kiosk on a Raspberry Pi 4 with a Dell P2418HT 24" touchscreen. Superseded by the web kiosk version above; kept for reference.
Recommended hardware:
- Raspberry Pi 4 (2 GB or more)
- Micro HDMI to Standard HDMI cable
- Dell P2418HT Touch 24" (or any HDMI touchscreen)
The frontend runs as a static node-server powered by Framework7 + Vue. It talks over a websocket to a Node backend that pulls from external sources (news, weather, calendar) and devices like Sonos speakers and Tibber. The background process is managed by pm2.
passwd
Change the last line in both files to homeboard:
sudo nano /etc/hosts
sudo nano /etc/hostname
sudo apt-get -y --fix-missing --no-install-recommends install matchbox chromium-browser cec-utils xinit x11-xserver-utils ttf-mscorefonts-installer xwit sqlite3 libnss3 xserver-xorg xserver-xorg-video-fbdev xinit pciutils xinput xfonts-100dpi xfonts-75dpi xfonts-scalable unclutter xdotool
sudo apt update
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
nvm install node
npm install -g npm@latest
npm install -g pm2
pm2 startup
# Then run the suggested `sudo env PATH=...` command pm2 prints.
git clone https://github.com/blanck/homeboard.git ~/homeboard
cd ~/homeboard
git remote set-url origin git@github.com:blanck/homeboard.git
npm install
npm update
npx browserslist@latest --update-db
pm2 start '/home/pi/homeboard/server.js'
pm2 save
sudo rm /etc/xdg/autostart/piwiz.desktop
sudo sed -i "/exit 0/isudo iw wlan0 set power_save off" /etc/rc.local
echo "@sh /home/pi/homeboard/start.sh &" | sudo tee -a /etc/xdg/lxsession/LXDE-pi/autostart
echo "tmpfs /tmp tmpfs defaults,noatime,nosuid,size=1024m 0 0" | sudo tee -a /etc/fstab
echo "tmpfs /var/log tmpfs defaults,noatime,nosuid,mode=0755,size=100m 0 0" | sudo tee -a /etc/fstab
Copy the sample config and fill in your own API keys / preferences:
cp ~/homeboard/config.sample.js ~/homeboard/config.js
nano ~/homeboard/config.js
pm2 restart server
ssh pi@homeboard.local
cd homeboard
git clone git@github.com:blanck/homeboard.git ~/Development/homeboard
cd ~/Development/homeboard
npm install
node server.js # one terminal — backend
npm run dev # another terminal — frontend with HMR on localhost:8080
In Chrome, open DevTools → Toggle device toolbar (CMD/Ctrl + Shift + M) and set 1920×1080 to match the kiosk display.
sudo sed -i " 1 s/.*/& disable_splash=1 logo.nologo consoleblank=0 loglevel=1/" /boot/cmdline.txt
sudo systemctl disable getty@tty3
sudo apt-get -y install fbi
sudo pip install gdown
sudo gdown -O /etc/systemd/system/splashscreen.service https://drive.google.com/uc?export=download\&id=13eWP-EtHfgUL6yl2-ptZhjkT3PJuR8rj
sudo cp ~/homeboard/assets-src/splash.png /opt/splash.png
sudo systemctl enable splashscreen
export DISPLAY=:0 && pcmanfm --set-wallpaper /opt/splash.png
sudo sed -i '/#disable_overscan/ c\disable_overscan=1' /boot/config.txt
# Or edit /boot/config.txt manually and try:
# disable_overscan=1
# framebuffer_width=1920
# framebuffer_height=1080
# hdmi_force_hotplug=1
# hdmi_group=1
# hdmi_mode=31
Missing Xcode command-line tools:
xcode-select --install
pm2 stop server
cd ~/homeboard
node server.js # see errors directly
pm2 start server
sudo apt install -y maim
ssh pi@homeboard.local 'DISPLAY=:0.0 maim' > screen.png
