Skip to content

svenger87/kinboard

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


Use join code DEMO01 to load a populated household, or create your own family from scratch. Demo data resets daily — bring your own ideas; don't bring your real shopping list.


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
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 Family members, Devices
Monthly themes — colors shift through the year automatically Themes & locales
i18n — English + German, full UI parity 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, plus another ~3-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

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. A plugin authoring guide is in the works.


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.0.6 (2026-05-07). Live demo running the latest tag at demo.kinboard.app (auto-updated via Watchtower; data resets daily). 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.

Done in v1.0.0

  • Pre-built multi-arch (amd64 + arm64) Docker images on ghcr.io so self-hosters skip the build step
  • CI on PRs (ESLint + i18n bundle parity + shellcheck)
  • First tagged release (v1.0.0)

Up next (no fixed dates)

  • End-to-end test suite running the full Docker stack against Playwright
  • Plugin system + extracted Tesla / Zendure plugins (currently Tesla and the energy dashboard live in core)
  • Country-aware holiday support (currently DE only)
  • Calendar event reminders via web push
  • iCalendar (.ics) feed support beyond Google Calendar
  • Additional locales beyond EN + DE (community PRs welcome — 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.