Skip to content

Repository files navigation

Kinboard

A self-hosted family dashboard for the kitchen wall. Calendar · weather · photos · shopping list · smart-home — one screen, every device, real-time sync.

License: MIT CI Docker image Release Stars Issues

Sponsor Buy Me a Coffee


The landing page at kinboard.app has the pitch, screenshots, and install path. The demo at demo.kinboard.app runs the latest tagged release with mock integrations — use join code DEMO01 to load a populated household, or create your own family from scratch. Demo data resets hourly.


Kinboard dashboard — kitchen kiosk portrait view

Built for kiosk-style touchscreens but works on any phone, tablet, or browser. Multi-device, multi-person, no cloud account required.


Table of contents


Why

Family logistics are scattered across calendars, chat threads, sticky notes, and "did you check the shopping list?" Kinboard consolidates the daily-driver stuff into one always-on display, so the family knows what's happening without opening apps.

  • Self-hosted. Your data stays on your hardware. No SaaS, no telemetry, no account gating.
  • Real-time. Edit a shopping item on your phone, it appears on the kitchen wall in milliseconds (Supabase Realtime over WebSockets).
  • Offline-tolerant. The shopping list works in the basement supermarket without signal — changes queue locally and replay when the device gets connectivity back.
  • Touch-friendly. Designed for wall-mounted tablets first; mobile and desktop are first-class too.
  • Modular. Pick the integrations you actually use; the rest stay invisible.

Features

Feature Wiki page
Dashboard — clock, today strip, configurable widget grid Dashboard
Calendar — two-way Google Calendar sync, per-person colors, holidays, waste-pickup widgets Calendar
Shopping list — built-in real-time list with offline support + dedicated standalone PWA, optional Bring! sync Shopping
Recipes & meal planning — Chefkoch.de search + schema.org URL import, weekly meal board, recipe-driven shopping Recipes & meals
Tasks & todos — per-person assignment, priorities, daily reminder push Tasks & todos
Notes — quick shared sticky notes for the household Notes
Birthdays — year-ring viz, countdowns, gift-idea tracking Birthdays
School schedule — per-child timetable + auto pack list for tomorrow Schedule
Smart home — Home Assistant entities, room tabs, floating-lights master control Smart home
Energy dashboard — solar / battery / grid live flow + charts Smart home → Energy
Cameras — live WebRTC streams (via go2rtc) Cameras
Pocket money — per-kid virtual accounts with parent-configurable APR, allowance cron, saving goals + parent-approval queue, evolving avatar (5 species × 8 stages) Pocket Money
Photo screensaver — Immich monthly album or Unsplash fallback, presence-aware blanking Screensaver
Weather — current + hourly + radar (OpenWeatherMap) OpenWeatherMap
Web push notifications — shopping items, task assignments, daily todo digest. PWA install required on iOS. Notifications
Multi-device + multi-person — devices join a family with a 6-char code, per-person color coding everywhere People & devices
Monthly themes — colors shift through the year automatically Themes & locales
i18n — English, German, French — partial translations welcome Themes & locales

The full wiki has a page for every feature plus integration setup, kiosk hardware reference build, security model, and database schema.


Quick start

You need Docker (with Compose v2), Node.js 20+ (for the VAPID key generator that powers push notifications — setup.sh uses npx; if Node.js is missing, setup completes but push notifications stay disabled), ~2 GB free disk, and ~10 minutes. The bundled docker-compose.yml brings up the Next.js app, a self-hosted Supabase stack, and supporting services.

RAM: the local Next.js build peaks around ~4 GB during type-check and static-page generation. On a 4 GB VM you'll need ≥ 8 GB total swap to avoid OOM kills during build (fallocate -l 8G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile). Or — recommended — skip the build entirely by using the pre-built image at docker-compose.image.yml. That drops bring-up to ~30 sec and needs only ~512 MB at runtime.

If you don't have Docker yet:

curl -fsSL https://get.docker.com | sh

Then bring Kinboard up:

git clone https://github.com/svenger87/kinboard.git
cd kinboard
./setup.sh                # generate random secrets + Supabase JWT keys
cd webapp/docker
./start.sh up             # docker compose up -d

Open http://<server-ip>:3001 (or http://localhost:3001 if local), follow the setup wizard to create your first family, and start adding integrations from /settings.

Push notifications require Node.js for VAPID key generation. If node isn't on PATH when setup.sh runs, push stays disabled (everything else works); install Node.js + re-run ./setup.sh --force later to enable.

Skip the local build by using the pre-built multi-arch image (amd64 + arm64) at ghcr.io/svenger87/kinboard:latest. Drops bring-up to ~30 sec and ~512 MB RAM at runtime instead of 4 GB+ during build. See webapp/docker/docker-compose.image.yml for the overlay.

Updating

./start.sh up reuses the cached image — fast for restarts but won't pick up new code. After pulling source updates, use:

git pull
cd webapp/docker
./start.sh restart    # rebuilds the webapp image + recreates webapp + cron

Hands-off auto-update — an optional Diun + webhook overlay watches GHCR for new kinboard-webapp images and runs the full upgrade path (pull, migrate, restart) automatically when one lands. Replaces the deprecated Watchtower overlay. See Self-hosting → Auto-updates for setup.

For production self-hosting (Traefik + custom domain + backups + updates), see Self-hosting.


Screenshots

A few highlights from the demo data set — see the wiki for the per-feature pages.

Calendar
Calendar
Energy
Energy dashboard
Home automation
Home automation
Shopping
Shopping
Birthdays
Birthdays
Recipes
Recipes
Meal planning
Meal planning
School schedule
School schedule
Todos
Tasks & todos

A light-mode variant of every screenshot is available with -light suffix (e.g. dashboard-portrait-light.png), and a phone-viewport variant lives in docs/wiki/images/mobile/. The full toolchain that produces them — local docker stack with anonymized prod data + mock HA / Tesla / OpenWeatherMap servers + Playwright capture — lives in docs/wiki/screenshots/.


Integrations

Service Purpose Required?
Supabase (self-hosted) Database + realtime sync Yes (bundled)
OpenWeatherMap Weather forecasts + radar Optional, free tier OK
Google Calendar Two-way calendar sync Optional
Immich Photo screensaver and gallery Optional
Home Assistant Smart-home entities and energy Optional
Bring! Shopping list sync (built-in list works without it) Optional
go2rtc WebRTC camera streams Optional

Niche integrations (Tesla Fleet, Zendure SolarFlow batteries, etc.) ship as opt-in plugins. See the Plugin development guide to write your own.


Tech stack


Reference hardware build

Kinboard is hardware-agnostic — any HDMI display + any small PC works. For people who want a known-good combination, Reference build documents one ~€700 setup with a 27" capacitive touchscreen + a Mele Quieter 4C mini-PC + a custom oak frame, with a complete BOM, wiring, and what didn't work.

For software side of the kiosk install: Windows 11 (Mele 4C) walks through Edge --kiosk mode + the on-screen keyboard, and Linux guidance covers Cage / GNOME / X11 alternatives.


Documentation

The wiki is the source of truth for everything beyond this README:


Status & roadmap

v1.0.0 shipped 2026-05-04 — first tagged public release. Latest: v1.4.0 (2026-07-11). Live demo running the latest tag at demo.kinboard.app (auto-updated via Diun + the self-update webhook; data resets hourly). The project is single-maintainer and developed in personal time; expect periodic activity rather than a Big Co cadence. See the CHANGELOG for what's in each release and the RELEASE doc for how releases are cut.

Security model: designed for a trusted home network. Do not expose Kinboard directly to the public internet without putting a reverse proxy and authentication layer in front of it. See Security & threat model and SECURITY.md.

Recently shipped

  • Security hardening, backup & export, undo (v1.4.0) — integration credentials and the settings PIN moved to server-only storage; Settings → Data & backup can export everything to JSON or publish a secret ICS feed of your calendar; deleted items get an Undo toast; birthday reminders now actually send a push; the webapp container reports health for automated monitoring
  • Redesign completion, French, join-code expiry (v1.3.0) — the flat sage-linen visual refresh reaches nearly every page; Kinboard ships a French interface alongside English and German (community-contributed, #9); Settings can rotate the family join code and set it to expire
  • Onboarding completeness + setup hardening (v1.2.0) — a persistent getting-started checklist replaces the one-time setup banner, "discover" cards explain empty plugin widgets, Reconnect banners surface rejected Google/Home Assistant credentials, and the stack self-aligns service passwords so a bare docker compose up works out of the box
  • Pocket Money plugin, end-to-end auto-update, and nav drag-reorder (v1.1.0) — per-kid virtual pocket-money accounts with parent-configurable interest and savings goals, a Diun + webhook overlay that pulls and applies new images automatically, and drag-and-drop reordering of the bottom navigation per device. See Pocket Money

Up next (no fixed dates)

  • Additional Stonks data drivers — paid sources like Polygon or Tiingo for users wanting higher-resolution intraday + cleaner symbol coverage than Yahoo's unofficial endpoints. The driver contract already leaves room; only API-key plumbing and a settings UI need to land
  • News feed per ticker on the Stonks detail page — Yahoo already returns it via quoteSummary, just needs UI
  • Per-ticker price alerts via the existing notification queue
  • Drag-reorder for the Stonks watchlist (currently creation-order)
  • More community locales (FR shipped in v1.3.0) — additional languages welcome via PR, see CONTRIBUTING.md

Contributing

Bug reports, feature requests, translations, and code PRs all welcome. The full guide lives in CONTRIBUTING.md — it covers dev setup, code conventions, the changelog discipline, and the Conventional Commits format. For where to take questions vs. issues vs. discussions, see SUPPORT.md.

Quick orientation:

  • Bugsopen an issue with logs + the route that broke
  • Features — open a GitHub Discussion before a substantial PR
  • Translationswebapp/messages/*.json is the source of truth; PRs adding new locales (FR, ES, IT, NL…) gladly accepted
  • Plugins — the plugin system isn't carved in stone yet; open a discussion to help shape it
  • Security — see SECURITY.md — please don't file public issues for credential / data-access vulnerabilities

CI runs ESLint + i18n bundle parity + shellcheck on every PR. The codebase deliberately doesn't run next build in CI to keep the dev-server experience predictable; production builds happen in the Docker image workflow.


Support development

Kinboard is built and maintained on personal time. If it's useful to your family and you'd like to keep it healthy:

GitHub Sponsors Buy Me a Coffee


Acknowledgements

Kinboard stands on the shoulders of an incredible amount of open-source work:

  • Supabase — the entire self-hosted backend stack (Postgres, Realtime, GoTrue, PostgREST, Storage)
  • Next.js + Vercel — the application framework
  • shadcn/ui — the component primitives. UI quality starts here.
  • Lucide — every icon in the app
  • Framer Motion — the smooth, deliberate transitions
  • next-intl — i18n done right for App Router
  • Home Assistant — the smart-home backbone Kinboard talks to
  • Immich — the photo backend that powers the screensaver
  • Bring! — the shopping list app some of us still want on a phone
  • go2rtc — the camera streaming bridge
  • OpenWeatherMap — weather data
  • Chefkoch.de — recipe search source
  • Faker — anonymized demo data for the screenshot toolchain
  • Playwright — automated screenshot capture

For the specific kiosk hardware combination (display + mini-PC + frame), see Reference build.


License

MIT — see LICENSE.

About

Self-hosted family dashboard for kitchen wall displays — calendars, shopping, weather, photos, smart home, energy and daily life in one beautiful screen.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages