family-dashboard ▸ docs/plans/2026-02-28-kiosk-redesign-v2-design.md
updated 2026-02-28

Family Dashboard Kiosk — Redesign v2

Date: 2026-02-28 Status: Design approved

Overview

Visual polish and new elements for the Family Dashboard kiosk view (portrait mode, wall-mounted Lenovo monitor, Raspberry Pi). Builds on the existing “Living Canvas” time-of-day theme system.

Goals

  1. Increase text readability across all calendar rows (+50-75%)
  2. Add person emojis to all calendar days (not just today)
  3. Add a family photo frame (Google Photos album)
  4. Add countdown chips for birthdays, holidays, and milestones
  5. Add a continuous-scroll news ticker
  6. Compress groceries, chores, horoscope, transit, and country into a smart rotating panel
  7. Eliminate wasted space in the bottom section

Layout

┌──────────────────────────────────┐
│ ☀ 16°C    12:21    19°/6°       │  ~5%   HEADER
│ ☼06:56 ☾17:41  Fri Feb 27       │        (unchanged)
├──────────────────────────────────┤
│ TODAY — February 27              │
│ 🌸 Wren Gotcha Day!             │  ~18%  TODAY HERO
│ 🍪 JF: Cristian + Joshua  1pm   │        (text +50-75%)
│ 🍪 JF: Justine + Masawa   2pm   │
├───────────────┬──────────────────┤
│ Saturday      │ Sunday           │
│ ☁ 3°         │ ☀ 5°            │  ~12%  NEXT 2 DAYS
│ 🌸 Piano 10a │ No events        │        (text +50-75%,
│               │                  │         person emojis)
├─────┬─────┬─────┬────────────────┤
│ Mon │ Tue │ Wed │ Thu            │  ~10%  COMPACT ROW
│ ☁3° │ ☀7° │ ☁5° │ ☀8°           │        (4 columns,
│     │ 🥭  │     │ 🍪🥭          │         text +50-75%,
│     │     │     │                │         person emojis)
├─────┴─────┴─────┴───┬────────────┤
│                     │            │
│                     │  PAGE A/B  │
│   FAMILY            │  rotating  │  ~35%  BOTTOM SECTION
│   PHOTO             │            │        2-column:
│                     │  (crossfade│        55% photo (L)
│  (Google Photos     │   every    │        45% rotating (R)
│   album, crossfade  │   20-30s)  │
│   every 10-15 min)  │            │
│                     │            │
├─────────────────────┴────────────┤
│ ▸ Reuters: Markets rally as...   │  ~4%   NEWS TICKER
│        ← continuous scroll →     │        (always visible)
└──────────────────────────────────┘

Component Details

1. Calendar Text Increase

All calendar rows get +50-75% text size increase for readability from 2-3 meters:

Element Current Target
Today hero event text ~18px ~28px
Next-2-day day name ~16px ~26px
Next-2-day events ~14px ~22px
Compact row day name ~12px ~20px
Compact row temp ~11px ~18px

2. Person Emoji Mapping

Emojis are assigned by calendar/person, not by event content. They appear on every event across all calendar rows.

Calendar Emoji
Daddy 🍪
Papa 🥑
Ellis 🥭
Wren 🌸
Family 🏠

Events from work calendars inherit the parent person’s emoji. Multi-person events show multiple emojis.

3. Bottom Section — 2-Column Layout

Left column (~55%): Family Photo Frame - Source: Google Photos shared album via Google Photos API - Proxy: Cloudflare Worker for CORS (same pattern as calendar feeds) - Rotation: crossfade to next photo every 10-15 minutes - Aspect ratio: object-fit: cover with subtle Ken Burns effect (slow pan/zoom) - Transition: 1.5-2s ease-in-out crossfade - Styling: subtle rounded corners, slight shadow to lift off background - Prefetch next photo for smooth transition

Right column (~45%): Smart Rotating Panel

Two pages that crossfade every 20-30 seconds:

Page A — “Life Stuff” (actionable/personal): - Countdowns: next 4 upcoming events, emoji + name + days remaining - Groceries: compact list of items - Chores: status summary

Page B — “World Stuff” (informational/ambient): - Horoscopes: 3 signs, truncated to 1-2 sentences each (sign symbol + name + summary) - Transit: next 3 BVG departures - Country of the day: flag + name + region

Smart skip rules: - Always reserve section space — show “Nothing needed” / “All done” placeholders for empty sections - Do NOT collapse empty sections (keeps layout stable between rotations) - Both pages fill the same fixed-height container - Content reflows within each page with consistent internal spacing

Transition: Same easing curve and duration as photo crossfade (800ms ease-in-out) for cohesive motion.

4. Countdown Configuration

Curated list, hardcoded in a config file. Computed dates for moveable events.

Event Date Emoji Notes
Daddy’s Birthday Jan 3 🍪 Fixed
Wren’s Birthday Jan 19 🌸 Fixed
Ellis’ Birthday Feb 10 🥭 Fixed
Easter Computed 🐰 Algorithmically determined
Summer Holiday (Berlin) ~Jul 24 🌴 Config per year
School Start (Berlin) ~Sep 1 🎒 Config per year
Halloween Oct 31 🎃 Fixed
Papa’s Birthday Dec 5 🥑 Fixed
Christmas Dec 25 🎄 Fixed

Display: always show next 4 upcoming events, sorted by nearest-first. Auto-cycles as events pass.

5. News Ticker

6. Visual Polish

Technical Notes

New Dependencies

New Hooks

New Components

Modified Components

Config Files

What’s Removed/Changed