calendar-card-pro is a free, open source internet of things (iot) project written in TypeScript and released under MIT. It has 1,231 GitHub stars, 103 forks and 51 open issues, and was last pushed 17 hours ago. On this registry it ranks #68 of 91 tracked projects in Internet of Things (IoT), with 5 head-to-head comparisons available.

What is calendar-card-pro?

Calendar Card Pro is an MIT-licensed, TypeScript-built custom Lovelace card for Home Assistant that displays upcoming events from one or more calendar entities in a clean, modern layout tuned for performance, and it is aimed at Home Assistant users who want a polished calendar on their dashboards without assembling one from generic cards.

What it is

Calendar Card Pro is a dedicated calendar card for Home Assistant's Lovelace dashboard system, written in TypeScript and released under the MIT licence. It sits in the Home Assistant custom-card ecosystem โ€” its topics list lovelace, custom-card, hacs and homeassistant โ€” and is distributed through HACS or installed manually. The card requires at least one calendar entity in Home Assistant and is compatible with any integration that generates calendar.* entities, with CalDAV and Google Calendar named as the primary tested integrations. The repository has around 1,231 stars, 103 forks and 51 open issues, with the last push in October 2026.

The problem it solves is specific. A popular community calendar design built with button-card and card-mod was visually striking but suffered from performance issues when implemented that way. Calendar Card Pro replaces that stack with a single card that does one thing: display upcoming events beautifully and efficiently. It relies on intelligent refresh mechanisms and smart caching so the dashboard stays smooth even when several calendars are in use.

Key capabilities

  • Displays multiple calendars in one card, with unique styling available per calendar.
  • Offers compact and expandable views that adapt to different dashboard needs.
  • Provides a visual configuration editor for setting up the card without hand-writing YAML.
  • Integrates weather forecasts alongside calendar events.
  • Uses smart caching, progressive rendering and minimal API calls to limit load on Home Assistant.
  • Is theme-aware and includes native ripple effects for deep Home Assistant integration.
  • Ships with translations for 35 languages, with community contributions accepted.

Who uses it and how

  • Home Assistant users who liked the original button-card and card-mod calendar design but ran into performance problems can move to a dedicated card that renders the same idea efficiently.
  • Households running several calendars can place multiple entities on one card with distinct styling while caching and minimal API calls keep the dashboard responsive.
  • Dashboard builders who prefer a graphical setup can configure layout, colours, event details and behaviour through the visual editor rather than YAML.
  • Users who want weather context on the same card can show a forecast next to their events.
  • Non-English-speaking households can use one of the 35 available translations.

Getting started

HACS is the recommended installation method, with manual installation documented as the alternative. At least one calendar integration must already be configured in Home Assistant, and the full setup and configuration reference lives on the documentation site at calendar-card-pro.alexpfau.com.

How it compares

The facts provided do not name paid products that this project replaces; the comparison the project itself draws is with the button-card plus card-mod approach, which it supersedes with a single dedicated card. Against that stack, the difference is architectural rather than commercial: the same visual result is delivered by purpose-built code with caching and progressive rendering instead of layered generic cards.

When to use it โ€” and when not to

Pick it if you already run Home Assistant and have a calendar integration such as CalDAV or Google Calendar configured, since the card cannot function without at least one calendar entity. Be aware that the README is deliberately a quick start only โ€” every configuration option, feature and example lives on the separate documentation site, so offline or repository-only readers will be following external links. Anyone not running Home Assistant, or wanting a standalone calendar application rather than a dashboard card, should look elsewhere.

project readme (upstream, from github) โ€” read inline

Calendar Card Pro for Home Assistant

hacs GitHub Release Downloads Downloads@latest

Calendar Card Pro Preview

โ˜• Support This Project

If you find Calendar Card Pro useful, consider supporting its development:

Buy Me a Coffee GitHub Sponsors

 

๐Ÿ“– Documentation

Read the Documentation

This README covers installation and a quick start. Everything else โ€” every configuration option, all features and worked examples โ€” lives on the documentation site, which is searchable and always matches the latest release.

๐Ÿš€ Installation Set the card up via HACS or manually
๐Ÿ“Œ Usage Add the card and configure it visually
โœจ Features & Configuration Weather, templates, layout, actions, and more
๐Ÿ“š Configuration Options Complete reference for every option
๐Ÿ’ก Examples Ready-made configurations to copy
๐Ÿ†• Release Notes Full history of every release

 

1๏ธโƒฃ Overview

๐Ÿ” About

Calendar Card Pro was inspired by a beautiful calendar design using button-card and Hass calendar add-on shared in the Home Assistant community. While the original design was visually stunning, implementing it with button-card and card-mod led to performance issues.

This motivated me to create a dedicated calendar card that excels in one thing: displaying upcoming events beautifully and efficiently.

Built with performance in mind, the card leverages intelligent refresh mechanisms and smart caching to ensure a smooth experience, even when multiple calendars are in use.

โœจ Features

  • ๐ŸŽจ Sleek & Minimalist Design โ€“ Clean, modern, and visually appealing layout.
  • โœ… Multi-Calendar Support โ€“ Display multiple calendars with unique styling.
  • ๐Ÿ“… Compact & Expandable Views โ€“ Adaptive views to suit different dashboard needs.
  • โš™๏ธ Visual Configuration Editor โ€“ Intuitive interface for effortless card setup.
  • ๐Ÿ”ง Highly Customizable โ€“ Fine-tune layout, colors, event details, and behavior.
  • ๐ŸŒฆ๏ธ Weather Integration โ€“ Display weather forecasts alongside your calendar events.
  • โšก Optimized Performance โ€“ Smart caching, progressive rendering, and minimal API calls.
  • ๐Ÿ’ก Deep Home Assistant Integration โ€“ Theme-aware with native ripple effects.
  • ๐ŸŒ Multi-Language Support โ€“ Available in 35 languages, community contributions welcome!

๐Ÿ”— Dependencies

Calendar Card Pro requires at least one calendar entity in Home Assistant. It is compatible with any integration that generates calendar.* entities, with CalDAV and Google Calendar being the primary tested integrations.

โš ๏ธ Important: Ensure you have at least one calendar integration set up in Home Assistant before using this card.

โฌ†๏ธ back to top

2๏ธโƒฃ Installation

๐Ÿ“ฆ HACS Installation (Recommended)

The easiest way to install Calendar Card Pro is via HACS (Home Assistant Community Store).

Open in HACS

Steps:
  1. Ensure HACS is installed in Home Assistant.
  2. Go to HACS โ†’ Frontend โ†’ Custom Repositories.
  3. Add this repository: https://github.com/alexpfau/calendar-card-pro as type Dashboard
  4. Install Calendar Card Pro from HACS.
  5. Clear your browser cache and reload Home Assistant.

๐Ÿ“‚ Manual Installation

๐Ÿ“– Click to expand manual installation instructions
Steps:
  1. Download both files from the latest release:
    ๐Ÿ‘‰ calendar-card-pro.js and editor.js

  2. Put both files into a folder of their own under www:
    /config/www/calendar-card-pro/

    The card ships as two files: calendar-card-pro.js and editor.js. Both must sit in the same folder, and calendar-card-pro.js is the only one you name as a resource โ€” the card loads the editor itself, when you open it. Use a subfolder rather than /config/www/ directly: that folder is shared by every hand-installed card, and editor.js is a common enough name that another file can take it. HACS does all of this for you, which is why it is the recommended route.

  3. Navigate to: Home Assistant โ†’ Settings โ†’ Dashboards โ†’ Resources โ†’ Add Resource

  4. Add the resource to your Lovelace Dashboard:

url: /local/calendar-card-pro/calendar-card-pro.js
type: module
  1. Clear cache & refresh your browser to apply changes.

โฌ†๏ธ back to top

3๏ธโƒฃ Quick Start

Add the card from your dashboard's โž• Add Card picker โ€” search for "Calendar" โ€” then click the three dots (โ‹ฎ) โ†’ Configure to open the visual editor.

Shortcut (Home Assistant 2026.6+): In the card picker, switch to the By entity tab and pick any calendar.* entity. Calendar Card Pro is offered under Community, already pointed at that calendar and previewed with its real events.

Prefer YAML? This is a complete, working configuration:

type: custom:calendar-card-pro
entities:
  - calendar.family
days_to_show: 3
show_location: false
show_month: false
Basic Configuration

Swap calendar.family for one of your own calendar.* entities and you have a working card.

โžก๏ธ From here, Usage walks you through multiple calendars, per-calendar colors and compact mode. Every available option is listed in the Configuration reference, and more ready-made setups are in Examples.

โฌ†๏ธ back to top

4๏ธโƒฃ What's New

โžก๏ธ View the Full Release Notes for a complete list of features.

Latest Release: v4.2

  • ๐Ÿง‘ Shared Events, Clearly Marked: Merged duplicates show every contributing calendar's label instead of only the first; set duplicate_accent_color to give shared events a color of their own
  • ๐Ÿ› Countdowns Follow Calendar Dates: Countdowns now say "tomorrow" for the next date and stop skipping days between later dates; same-day starts keep clock countdowns, while distant dates retain natural month/year wording
  • ๐Ÿ› Allowlists & Blocklists Work Together: Combined filters now keep only events that match the allowlist and escape the blocklist, rather than silently ignoring the blocklist

v4.1

  • ๐Ÿท๏ธ All-Day Events, as a Pill: allday_badge draws a rounded pill in each calendar's own color, around the event title the way Google and Apple Calendar do, or beside the clock, allday_badge_style offers four shapes and allday_badge_color picks the color they are drawn in โ€” each calendar's own, the row's own text color, or one you name. Off by default; try allday_badge: title first
  • ๐ŸŽจ Follow Home Assistant's Calendar Colors and Icons: Set accent_color to home-assistant and each calendar takes the color Home Assistant holds for it. Set its label the same way for that calendar's icon
  • ๐Ÿง‘ A Person's Photo in Front of Their Calendar: Set a calendar's label to a person entity ID and the card shows that person's picture โ€” faces instead of words on a household dashboard
  • ๐Ÿ—‚๏ธ Split One Calendar by Event Type: event_type takes all, timed or all_day, card-wide or per calendar โ€” list one calendar twice for a color on each, and Duplicate in the editor builds it for you
  • ๐Ÿ” Two New Per-Calendar Filters: allday_expires_at retires an all-day event partway through the day, so a bin collection stops sitting on the card until midnight, and days_of_week keeps one calendar to weekdays or weekends
  • ๐ŸŽ‚ Ages on Birthdays, Counts on Anniversaries: Write YEAR=1976 in a birthday event's description and the card appends the age to the title โ€” nothing to configure, and it stays right every year
  • โœ๏ธ Rewrite What an Event Says: replace_pattern, replace_with and replace_field rewrite one field of a calendar's events as the card draws them, leaving the calendar untouched. One Calendar, Many Purposes puts this and three of the options above into a single card

v4.0

  • ๐Ÿ—“๏ธ Column View: Lay the days side by side, one column each, instead of stacking them โ€” the same agenda, rotated, with its own per-view overrides and a responsive fallback to the list layout
  • โš™๏ธ Rebuilt Visual Editor: Nine panels built on Home Assistant's own form components, with a search box that finds any setting by name or YAML key, a customized-only filter, per-calendar settings, and per-view exceptions
  • โšก 41% Smaller to Download: The editor moved into a file the card fetches only when you open it, taking it and all its translations off the path every dashboard pays for
  • โšก Fewer Round-Trips on Every Page Load: One card load asked Home Assistant for the same events up to four times; requests are now deduplicated, and two display-only switches no longer discard a valid cache entry
  • ๐ŸŒ Eleven Editor Languages: Nine newly translated in full โ€” German, Estonian, Italian, Latvian, Lithuanian, Norwegian Bokmรฅl, Polish, Slovak and Swedish โ€” alongside US and British English, with per-string fallback so a partial translation still renders
  • ๐Ÿ› Dates, Clocks and Week Numbers: Week numbers were wrong for one date in seven outside UTC, the clock format disagreed with Home Assistant's own locale data for 33 of its 64 languages, and first_day_of_week: system returned Monday to everyone
  • โš ๏ธ Breaking: Manual installs now copy two files, event_icon_vertical_alignment defaults to top, and weather badges are styled through custom properties instead of inline styles

v3.6

  • ๐Ÿ“š A Documentation Site: The full manual now lives at calendar-card-pro.alexpfau.com โ€” a page per feature, a complete configuration reference, and ready-made examples
  • ๐Ÿ› One Stray Line of YAML Broke the Card: A bare - left in the entities: list replaced the whole calendar with a red error box; malformed entries are now discarded
  • ๐Ÿ› Per-Calendar Settings Applied Late: Editing a per-calendar label, colour or toggle did nothing until the cache expired โ€” edits now apply immediately
  • ๐Ÿ› Disappearing and Ellipsised Text: Titles gained a โ€ฆ when nothing had been truncated, and long words in descriptions and locations were clipped mid-character with no warning
  • ๐Ÿ› Multi-Day Countdowns: Each row of a split multi-day event counted differently; every row now counts whole calendar days to its own date

Older releases are covered in the Full Release Notes.

โฌ†๏ธ back to top

5๏ธโƒฃ Contributing

Want to improve Calendar Card Pro? I welcome contributions of all kinds โ€” whether it's fixing bugs, improving performance, or adding new features!

git clone https://github.com/alexpfau/calendar-card-pro.git
npm install
npm run dev

Then open a Pull Request against the dev branch.

  • ๐Ÿ“‹ Contributing guide โ€” full workflow, coding standards, and how to add a translation
  • ๐Ÿ—๏ธ Architecture documentation โ€” module responsibilities, data flow, and performance design
  • ๐ŸŒ Adding a translation? The card speaks 35 languages and the visual editor 11 โ€” new ones are always welcome.

๐Ÿ’ก Got a feature request? Open a GitHub Issue or start a discussion!

๐Ÿ† Acknowledgements

Calendar Card Pro is released under the MIT License. Full third-party attributions are listed in NOTICE.

โฌ†๏ธ back to top

Frequently asked questions

Is calendar-card-pro free to use?

calendar-card-pro is open source under the MIT licence. There is no licence fee and no seat count โ€” you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does calendar-card-pro do?

๐Ÿ“… A sleek and highly customizable calendar card for Home Assistant, designed for performance and a clean, modern look.

What is calendar-card-pro written in?

calendar-card-pro is primarily written in TypeScript. Its source is publicly available at https://github.com/alexpfau/calendar-card-pro, and it has 1,231 GitHub stars.