Skip to content

Repository files navigation

Kinboard

Your family's day, on one screen

Calendar, weather, meals, shopping, tasks, photos, and your smart home in a self-hosted dashboard built for the kitchen wall and every phone in the house.

License: PolyForm Noncommercial CI Release

Website · Live demo · Documentation · Community


Kinboard dashboard — kitchen kiosk portrait view

Built for an always-on touchscreen. Works on phones, tablets, and desktop browsers too.


Install

Kinboard needs Linux, Git, OpenSSL, and Docker with Compose v2. The installer downloads the current configuration, generates unique local secrets, walks you through the public URL and optional integrations, and starts the stable multi-architecture image:

curl -fsSL https://raw.githubusercontent.com/svenger87/kinboard/main/install.sh | bash

The default location is ./kinboard. Pass KINBOARD_DIR to choose another path, or KINBOARD_URL for a headless install:

curl -fsSL https://raw.githubusercontent.com/svenger87/kinboard/main/install.sh | KINBOARD_DIR="$HOME/kinboard" KINBOARD_URL=http://192.168.1.50:8100 bash

Open the URL printed at the end and create your family. The first device receives a six-character join code for the other phones, tablets, and wall displays. Optional services are configured later in Settings → Integrations.

The installer will never modify an existing kinboard directory. Existing installations keep their .env, secrets, data, compose overlays, and current upgrade path.

Update an existing installation

From its checkout:

git pull --ff-only
./setup.sh --non-interactive
cd webapp/docker
./start.sh up

That is the image-based path used by the one-line installer. If your existing installation intentionally builds a modified webapp from source, keep using COMPOSE_FILES="-f docker-compose.yml" ./start.sh restart; the installer does not change that checkout or its configuration.

Trying a release candidate — set KINBOARD_TAG=next in webapp/docker/.env and bring the stack up again. That follows the pre-release channel; remove the line (or set latest) to go back to stable. Release candidates are announced on the Releases page and are where feedback is most useful. See Self-hosting → Pre-release channel.

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.


What you get

  • A shared dashboard for calendars, weather, meals, tasks, notes, birthdays, school schedules, shopping, and photos.
  • Real-time updates across the wall display and every family device, with an offline-capable shopping list for poor mobile coverage.
  • Optional Home Assistant, Google Calendar, CalDAV, Immich, DLNA, iCloud, OpenWeatherMap, Bring!, and camera integrations.
  • Local data in a bundled Supabase stack, with backups and no hosted account or telemetry.
  • Touch-first layouts, installable PWAs, English, German, and French.

Explore every feature in the wiki.


Screenshots

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

These were captured before the 1.7.0 interface work (larger type and navigation for wall displays, opaque dialogs, themed device colours). They still show the app faithfully, but the current build looks a little different — the live demo is always the newest thing.

On your phone

The wall display is the point, but you're not always in front of it. The whole app is responsive and installs as a PWA, so the shopping list you edit in the supermarket is on the kitchen wall before you get home, and push notifications reach you when you're out.

Shopping list on a phone
Shopping list
Add with your thumb,
tick off in the aisle
Notification settings on a phone
Notifications
Per device, so the
wall stays quiet
Calendar on a phone
Calendar
Same data, laid out
for a thumb
Dashboard on a phone
Dashboard
The same board,
pocket-sized

On the wall

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

Every screenshot has a light-mode variant with a -light suffix, and the phone-viewport captures live 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
CalDAV (Nextcloud, Radicale, Fastmail, iCloud, …) Two-way calendar sync without Google Optional
Immich Photos: screensaver, album viewer and dashboard widget Optional
DLNA media server (MiniDLNA, Jellyfin, Plex, Synology, QNAP) The same photos off a NAS you already run — no account, no API key Optional
iCloud Shared Album The same, from a public album link on an iPhone — no Apple ID Optional
Unsplash Curated stock photos for the screensaver when you have no library of your own Optional, free tier OK
Home Assistant Smart-home entities and energy — and, since 1.9.0, the other way round: Kinboard's calendar, lists and family state as Home Assistant entities Optional
Bring! Shopping list sync (built-in list works without it) Optional
go2rtc WebRTC camera streams Optional

Kinboard in Home Assistant

Most dashboards read Home Assistant. Kinboard also feeds it — the family's day becomes entities you can automate on, in an installation that already runs your house.

Install from HACS as a custom repository (svenger87/kinboard-homeassistant), paste a token from Settings → Integrations, and you get:

20 entities next appointment (with the person's name and start time), what's on today, whose birthday is next, which children have school tomorrow, what's for dinner, open and overdue tasks, pocket money per child, saving-goal progress, and the next bin collection
Two real to-do lists shopping and tasks as todo entities — tick one in Home Assistant and it ticks in Kinboard, add one in Kinboard and it appears there. The To-do card, voice assistants and todo.* services all work with no glue
A calendar calendar.kinboard_family_calendar, including events that merely overlap the day you're looking at
Services add a shopping item, create a task, write a note, credit pocket money, dismiss a hint, force a refresh
Events a task ticked, a shopping item added, an appointment created, a device joined, a saving goal reached, the day's context changing

The events come from database triggers, not the API layer — so a task ticked on the kitchen tablet fires one exactly as an automation does. Delivery is resumable: a restart of either system loses nothing.

# The night before: tell everyone what tomorrow's lessons need.
- alias: "Pack the school bag"
  triggers:
    - trigger: time
      at: "19:30:00"
  conditions:
    - condition: template
      value_template: "{{ states('sensor.kinboard_school_tomorrow') not in ['unknown','unavailable',''] }}"
  actions:
    - action: notify.notify
      data:
        message: >-
          {{ states('sensor.kinboard_school_tomorrow') }} has school tomorrow —
          first lesson {{ state_attr('sensor.kinboard_school_tomorrow','first_lesson') }}.

Eleven more, ready to paste, in examples/ — each one loaded into a real Home Assistant by CI on every run, with every entity, service and event checked against the integration, so an example cannot quietly rot.

Permissions are per-token and nothing is implied: a token that may add shopping items cannot create tasks, and a read-only token cannot write at all.

AI assistants

Claude and ChatGPT can read the family's calendar, tasks, notes, meal plan and shopping list, add to and edit them, find recipes, set timers, keep birthdays, read the timetable and the energy sensors, ask to book pocket money, and control devices in a Home Assistant catalogue the family sets up — anything beyond the plainly harmless waits for a family member to confirm it on a Kinboard screen or phone — through Kinboard's built-in MCP endpoint. Add https://<your-kinboard>/api/mcp as a custom connector — after switching on Allow AI assistants under Settings → Integrations — and approve the request Kinboard shows you. See AI assistants.

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:


Project status

Kinboard is actively developed by one maintainer. See the release history for shipped versions and CHANGELOG.md for the next release. The live demo follows the release channel and resets its sample data hourly.

Kinboard is designed for a trusted home network. Use a reverse proxy with authentication before exposing it to the internet. Read the security model and SECURITY.md before a public deployment.


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:

  • Bugs — open an issue with logs + the route that broke
  • Features — open a GitHub Discussion before a substantial PR
  • Translations — webapp/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

Kinboard is free for your family and for any other noncommercial use — run it, change it, share it. It is licensed under the PolyForm Noncommercial License 1.0.0.

Commercial use needs a separate license. That covers selling Kinboard, selling devices with it installed, offering it as a hosted service, or building it into a paid product. Ask in GitHub Discussions.

Releases up to and including v1.12.1-rc.3 were published under the MIT License and stay under it; see NOTICE.

The name Kinboard and its logos are not covered by either license. If you publish a modified version, give it a name of its own. See TRADEMARK.md for what is fine and what needs asking.

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

14 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages