Skip to content

Repository files navigation

Homeboard

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.

Sample dashboard

Feel free to fork, file feature requests, send pull requests, or share ideas.


Two ways to run it

Android tablet (React Native) — recommended

The active version. Easiest to install: grab a prebuilt APK and sideload it.

  1. Download the latest homeboard-vX.Y.Z.apk from Releases.
  2. 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
  3. 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.

Raspberry Pi / Linux kiosk (web): same app as Android

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.

Raspberry Pi (legacy web app, deprecated)

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)

Software structure

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.

Installation on a fresh Raspberry Pi

Change the default password
passwd
Set the hostname to "homeboard"

Change the last line in both files to homeboard:

sudo nano /etc/hosts
sudo nano /etc/hostname
Install Chromium and other X11 packages
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
Install Node and npm via nvm
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
Install pm2
npm install -g pm2
pm2 startup
# Then run the suggested `sudo env PATH=...` command pm2 prints.
Clone the repo
git clone https://github.com/blanck/homeboard.git ~/homeboard
cd ~/homeboard
git remote set-url origin git@github.com:blanck/homeboard.git
Install dependencies
npm install
npm update
npx browserslist@latest --update-db
Start the background server
pm2 start '/home/pi/homeboard/server.js'
pm2 save
Remove the first-run welcome screen
sudo rm /etc/xdg/autostart/piwiz.desktop
Disable Wi-Fi power save
sudo sed -i "/exit 0/isudo iw wlan0 set power_save off" /etc/rc.local
Autostart on boot
echo "@sh /home/pi/homeboard/start.sh &" | sudo tee -a /etc/xdg/lxsession/LXDE-pi/autostart
Move /tmp and /var/log to RAM (avoids SD-card corruption on crash)
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

Configuration

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

Remote access

ssh pi@homeboard.local
cd homeboard

Local development on your laptop

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.

Splash screen

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

Troubleshooting

Bad-looking screen — try one at a time:
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
npm install fails with node-gyp error on macOS

Missing Xcode command-line tools:

xcode-select --install
Manually run the server
pm2 stop server
cd ~/homeboard
node server.js          # see errors directly
pm2 start server
Take remote screenshots from your laptop
sudo apt install -y maim
ssh pi@homeboard.local 'DISPLAY=:0.0 maim' > screen.png

About

Home dashboard project to show weather, news, shared calendar and stocks. Control Sonos group speaker with playlists and home automation.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages