A beautiful, touch-first shared calendar for two — designed for wall-mounted displays like a 21" touchscreen. Think of it as a Skylight alternative built specifically for couples, not families.
- Three calendars — Partner 1, Partner 2, and a shared "Together" calendar, all color-coded
- Three views — Month (overview), Week (time-grid), Agenda (upcoming events list)
- Touch-optimized — large tap targets, left/right swipe to navigate, tap to create events
- Event creation — tap any day or empty time slot to add an event directly to Google Calendar
- Smart filters — view all events, just yours, just theirs, or just "Together" events
- Settings drawer — change names, colors, theme, and time format without restarting
- Beautiful dark theme — ideal for wall displays; light and auto modes also available
- No subscription — runs entirely on your own Home Assistant instance
- Home Assistant 2024.1 or newer
- HACS installed
- Google Calendar integration configured in Home Assistant (Settings → Integrations → Google)
- You need one calendar entity per person, plus one for shared events
- The built-in Google integration handles all the OAuth — no extra setup needed
- Open HACS → Integrations → ⋮ → Custom Repositories
- Add
https://github.com/YOUR_USERNAME/couple-calendaras an Integration - Find "Couple Calendar" and click Download
- Restart Home Assistant
- Copy
custom_components/couple_calendar/into your HA config'scustom_components/folder - Restart Home Assistant
- Go to Settings → Integrations → Add Integration
- Search for Couple Calendar
- Follow the config flow:
- Enter each partner's name and pick their color
- Select which Google Calendar entity belongs to each partner and the shared calendar
- Set your display preferences (time format, week start, theme)
- "Couple Calendar" will appear in the Home Assistant sidebar
| Action | Result |
|---|---|
| Tap a day cell | Open "New Event" form for that day |
| Tap an event chip | View event details |
| Swipe left/right | Navigate to next/previous month or week |
Tap ‹ / › buttons |
Navigate |
| Filter buttons (top) | Show All / Partner 1 / Partner 2 / Together |
| Month / Week / Agenda | Switch views |
+ Add Event button |
Create a new event (choose who it belongs to) |
| Hamburger (☰) | Open settings drawer |
Open the settings drawer (☰ icon) to change:
- Partner names and colors
- Theme (dark / light / auto)
- Time format (12h / 24h)
- First day of week
Changes are saved locally in the browser and survive page reloads. To change which calendar entities are linked, go to Settings → Integrations → Couple Calendar → Configure.
- Set Home Assistant to kiosk mode — install the
kiosk-modeHACS frontend card and add?kioskto the URL to hide the HA header - Use the HA Companion app on the Android display for auto-login and kiosk support
- Set display auto-brightness to keep it readable at night without being blinding
- Enable Dark theme on the calendar for a clean wall display look
- Set your dashboard as the default page so it loads on boot
custom_components/couple_calendar/
├── __init__.py — Integration setup, panel registration, static file serving
├── manifest.json — HA integration metadata
├── config_flow.py — Setup wizard (2 steps: calendars, display prefs)
├── const.py — Constants and defaults
├── strings.json — UI string keys
├── translations/
│ └── en.json — English translations
└── frontend/
└── couple-calendar-panel.js — Full calendar SPA (single Web Component)
The frontend is a self-contained Web Component (<couple-calendar-panel>) written in vanilla JavaScript — no build step, no framework. It communicates with Home Assistant via:
hass.callApi("GET", "calendars/<entity>?start=...&end=...")to fetch eventshass.callService("calendar", "create_event", {...})to create events
- Todo / task lists per partner
- Recurring event support
- Event editing and deletion
- Weather integration (show forecast on calendar days)
- Anniversary / special date highlighting
- Pinch-to-zoom between views
- Notification badges for upcoming events
PRs welcome! Please open an issue first for large changes.
MIT