No description
Find a file
Philipp A. Baer 4e19f5e63e
Some checks failed
build-and-test / build (push) Failing after 53s
Merge pull request 'Configure Renovate' (#2) from renovate/configure into main
Reviewed-on: #2
2026-02-17 20:48:37 +00:00
.forgejo/workflows Improve the workflow 2026-02-11 20:46:01 +01:00
.github/workflows Improve the workflow 2026-02-11 20:46:01 +01:00
custom_components/birthday_calendar Initial prototype 2026-02-09 21:11:34 +01:00
tests Exclude __pycache__ from archive and improve naming 2026-02-09 21:20:52 +01:00
.gitignore Improve the workflow 2026-02-11 20:46:01 +01:00
hacs.json Initial prototype 2026-02-09 21:11:34 +01:00
pyproject.toml Improve the workflow 2026-02-11 20:46:01 +01:00
pytest.ini Initial prototype 2026-02-09 21:11:34 +01:00
README.md Improve the workflow 2026-02-11 20:46:01 +01:00
renovate.json Add renovate.json 2026-02-17 20:47:30 +00:00
uv.lock Improve the workflow 2026-02-11 20:46:01 +01:00

Birthday Calendar (CardDAV)

A Home Assistant integration that creates a calendar entity from a CardDAV addressbook, extracting birthdays from contact VCards.

CI

Features

  • Connects to any standard CardDAV server (SOGo, Nextcloud, iCloud, etc.).
  • Extracts BDAY fields from VCards.
  • Creates a Calendar entity with all birthdays as all-day events.
  • Calculates the next birthday occurrence and current age.
  • Configurable look-ahead period (default 30 days).

Installation

HACS

  1. Open HACS.
  2. Add Custom Repository: https://github.com/phbaer/ha-birthday-calendar.
  3. Select "Integration".
  4. Install.

Manual Installation

  1. Download the birthday_calendar.zip from the Latest Release.
  2. Unzip it.
  3. Copy the custom_components/birthday_calendar folder to your Home Assistant config/custom_components/ directory.
  4. Restart Home Assistant.

Configuration

  1. Go to Settings > Devices & Services.
  2. Click Add Integration.
  3. Search for Birthday Calendar.
  4. Enter the following details:
    • Calendar Name: Friendly name for the entity.
    • CardDAV URL: Full URL to your addressbook (e.g., https://example.com/dav/user/contacts/).
    • Username: CardDAV username.
    • Password: CardDAV password.
    • Days to look ahead: Number of days to include in the calendar view/state (default 30).

Development

This project uses uv for dependency management and requires a recent version of Python (3.13.2+).

Prerequisites

  • uv
  • Python 3.13.2 or later
  • C Compiler (build-essential, gcc, or clang) - Required for compiling dependencies on Python 3.14.

Setup

uv sync

Testing

Run the full test suite:

uv run pytest

CI/CD

The project includes a Forgejo/GitHub Actions workflow (.github/workflows/ci.yaml) that:

  1. Sets up Python 3.12 and uv.
  2. Installs system dependencies (compilers).
  3. Runs tests.
  4. Create a HACS-compatible ZIP release artifact (birthday_calendar.zip) on every push and tag.