Repository navigation
Birthdays
The /birthdays page — family + extended-family birthday tracking with countdown + a year-ring visualization.

Tap + Add birthday on the page or via Settings → Family members → people who have a birthday recorded show up automatically.
Birthday entry asks for:
- Name
- Date — full date including year (year used for "turning N" math)
- Person (optional) — if this birthday is for an existing family member, link to their row to inherit color
- Photo (optional) — shown on the hero card, the year-ring dot, and the list, instead of the linked person's avatar
- Notes (optional) — gift ideas, what they like, allergies for kid party invites
Birthdays without a linked person stay separate from the family-member list. Useful for:
- Grandparents who aren't on the dashboard but you want to remember
- Friends and extended family
- Children's classmates whose parties you need to plan around
The headline UI element: a circular SVG showing 12 month sectors, today as a tick mark, and one colored dot per upcoming birthday positioned by date. Birthdays in the next 30 days are larger + show the person's name.
The center shows the total count of tracked birthdays.
Below the ring: a chronologically-sorted list of birthdays, starting from today and wrapping to next year. Each card shows:
- Avatar / colored dot
- Name + age the person is turning
- Date (formatted per locale)
- Days until / "Today!" / "Tomorrow"
- Linked notes (gift ideas, etc.)
The first card (closest birthday) is enlarged for emphasis.
The dashboard's birthday widget surfaces:
- The next 3 upcoming birthdays
- A "🎂 happening today" banner if anyone has a birthday today
The today-strip ribbon also shows birthday names if today's the day.
Push notifications for birthdays: enable the per-device toggle in Settings → Notifications, then set how much lead time you want per birthday — each birthday entry has its own notify N days before field, so a birthday that needs gift-shopping time can get a week's notice while others get a same-day nudge. Runs on the same cron infra as the todo daily digest and respects quiet hours. See Notifications → Birthday reminders.
You can also add a Google Calendar entry the day before any birthday and it'll show up via the regular Calendar events flow if you want it integrated with the calendar widget too.
- Stored in
public.birthdays - One row per birthday (not aggregated by person)
- Real-time published — adding on a phone updates the ring on the kitchen wall in ~1 s
- Deleting a birthday shows an "Undo" toast that restores it exactly as it was
- Visual cue for kid parties: the year ring makes it easy to see "oh there's two birthdays in May, plan accordingly"
- Gift idea capture: the notes field is a year-round dumping ground for ideas — "she liked the puzzle book at Anna's house, would be a good 8th-birthday gift"
- Extended-family awareness: add aunts/uncles/cousins so the kids learn to remember them too
- Anniversaries (wedding, etc.) — workaround: add as a birthday with a date, name them "Wedding anniversary"
- Birthday cards / message generation — out of scope
- People-and-Devices — link birthdays to family members for color matching
- Calendar — birthdays also appear as all-day events on the calendar
- Dashboard — birthday widget
Kinboard on GitHub · Sponsor · Buy me a coffee · Report a bug · Free for noncommercial use
Getting started
Operations
Integrations
AI assistants
- Overview & quick start
- Connecting
- What they can do
- Permissions & safety
- Troubleshooting
- Self-hosting notes
Kiosk hardware
Built-in features
- Dashboard
- Calendar
- Shopping
- Recipes & meal planning
- Tasks & todos
- Notes
- Messages
- Timers
- Photos
- News
- Birthdays
- School schedule
- Smart home & energy
- Screensaver
- People & devices
- Recycle bin
- Creatures & rewards
- Notifications
- Themes
Plugins (per-family on/off)
Contributing