DIY Family Calendar (Skylight)

You can just use the “all day” slider and then it just works. No date needed. Adds event all day in the day you clicked on.

I’m so sorry as I know you’ve kindly posted this and I’m not clever enough to get it to work so taking up your time. I have made all the calendars, called them .scott, .sophie etc and also make the family, birthdays ones. I’ve change the weather entity to my met office one, it seems like its mainly working, but below the toggle buttons I get no calendar showing (there are events, and I CAN add an event from the dashboard and it will add it to the calendar so there must be some sort of link. My main confusion may be what to change. I’ve changed everywhere the comment said to, but I havent changed every single thing, so this is a snippet from the dashboard. Can you offer any advice?

      - type: horizontal-stack
        cards:
          - type: custom:bubble-card
            card_type: button
            button_type: state
            entity: calendar.scott
            show_icon: true
            show_name: true
            tap_action:
              action: perform-action
              perform_action: script.calendar1_calendar_visible_filter
            styles: |
              .bubble-button-background {
                opacity: 1 !important;
                background-color: ${hass.states['input_text.calendar1_calendar_filter'].state === '.*' ? 'light-grey' : 'var(--calendar1-default-primary-color)'} !important;
              }
          - type: custom:bubble-card
            card_type: button
            button_type: state
            entity: calendar.sophie
            show_icon: true
            show_name: true
            tap_action:
              action: perform-action
              perform_action: script.calendar2_calendar_visible_filter
            styles: |
              .bubble-button-background {
                opacity: 1 !important;
                background-color: ${hass.states['input_text.calendar2_calendar_filter'].state === '.*' ? 'light-grey' : 'var(--calendar2-default-primary-color)'} !important;
              }

There is another way: https://community.home-assistant.io/t/skylight-calendar-card-a-family-friendly-schedule-card/981221, which is a single card with no fiddly configuration.

Thank you - thats looks good, but I like the layout, theme and weather etc on this one, plus the possibility of adding chores. I’ll give some time for @mohesles1 to help if they can and then have a look at that alternative

1 Like

have you tried this? It worked for me when I couldn’t see the calendar but could create new events that showed on my phone.

THANK YOU!!!

That was absolutely what I needed to do!
I still don’t have the correct colours showing for each calendar for the backgrounds, and my holidays calendar isn’t showing, but I at least have a calendar showing now!

I have been working on this project and pushed it to Github tonight.

Have a look.

  • Dashboard with today’s events, chores due, weather, and home device status
  • Family calendar with month view and Google Calendar sync
  • Chore tracker with assignments, due dates, recurrence, points, and leaderboard
  • Home Assistant integration — display garage doors, locks, sensors, and more
  • School lunch menu (BCPS / Nutrislice)
  • Photo slideshow screensaver
  • Touch-friendly — works great on iPad, Chromebook, or any browser
1 Like

I’ve just updated some of my HACS cards and the calendar has now stopped showing. Has anyone else had this issue?

Which one did you update? I only see the clock-weather card that has an update available and it seems to work here.

Ironically I think something happened to my Met Office Weather Card at the same time I updated the bubble card… that’s what took it down!

I also did a few updates the other day and now the calendar no longer appears.
Did you get yours up and running again? I’m still new to this and was just getting things configured before releasing it to my family so by no means am I an expert

I followed all the instructions, guidelines, forums and still fell flat on my face. I’m not a regular HA user, but I was willing to try anything including Magic Mirror, Homarr, this…

Tldr, I designed something from scratch, built it using AI (cue the tomatoes) and have been rigorously testing and iterating for a few months now. Let me know what you think.

1 Like

This looks great. Going to be trying this out!

@randr Thanks for the “plus” model of the calendar. Used HAC’s and added “-plus” to the end of the template in my dashboard and 2 new lines of config later and its all working smoothly.

Took about 5 minutes tops, very nice.

Couple of things I wondered if you could help with though please? And apologies if I missed it, but I dont think it was covered elsewhere in this thread:

  1. Is it possible to edit the style sheet of the popup prompt for adding calendar events. For some reason the very top element “Calendar” both the title and the drop down seem very slim compared to the other fields

  2. Is it possible to remove the “edit” element from the pop up that appears when you click on an existing event. I only ask because im using google calendars and it doesnt allow it, and then brings up an error.

Many thanks in advance

Hello
Now in 2026, anything better value wise for a larger screen 32inch +?

I’ll check but mine is fine. Maybe some update changed it? I will look and report back. As for the edit I know it don’t work on Google but it should warn you and we all know it works for local. I’ll see if I can remove it when you click Google event that should be doable

not seeing issues here and do you not get this warning clicking edit on google event?

I reloaded HA and the pop up warning is now appearing and the drop down calendar box appears to be the same as the others now.

Reboot for the win…after 18 years in IT you think I’d have tried that first face/palm

Next up, I’m going to try the chores package!

Thanks for checking though

Does anybody know if there is a way to fix the calendar view so it:

  1. Only shows the days of the month you are in
  2. Always start the calendar on a Monday, even if the 1st is say a wednesday

By this I mean when I set the variables to the number of days if you choose “31” and there are only 30 days it brings the 1st day of the following month into view

Also if you set it to “month” it then means your rows of days are different every month

So I almost need April for instance to not show:
Wed 1, Thur 2, Fri 3, Sat 4, Sun 5, Mon 6, Tue 7
as the first row of 7 days but fr it to show

Mon (no day), Tue (no day), Wed 1, Thur 2, Fri 3, Sat 4, Sun 5
Mon 6, Tues, 7, Wed 8, Thur 9, Fri 10, Sat 11, Sun 12

Hope that makes sense, very difficult to explain

Hi,

Sorry another question, just trying to figure out how to utilise the space to the far right. The days seem to start close to the edge on the left, but there is a wider gap.

Changing the width of the .day or .days from 12% to 14% doesnt seem to work. So im guessing there is another element I’ve over looked. I’ve tried playing with margins, padding, spacing and alignment on various elements like .container as well but cant for the life of me spot whats wrong.

Image to show what I mean:

The code is as follows in case anybody wouldnt mind taking a look please:

        card:
          type: custom:week-planner-card-plus
          tapEmptyDayToAdd: false
          clickEmptyDayToAddPlus: true
          calendars:
            - entity: calendar.1
              name: 1
              color: '#92D050'
              filter: ${ PERSONCAL }
            - entity: calendar.2
              name: 2
              color: '#e5f50c'
              filter: ${ PERSON2CAL }
            - entity: calendar.3
              name: 3
              color: '#44B3E1'
              filter: ${ PERSON3CAL }
            - entity: calendar.4
              name: 4
              color: '#E97132'
              filter: ${ PERSON4CAL }
            - entity: calendar.5
              name: 5
              color: '#eb8af2'
              filter: ${ PERSON5CAL }
            - entity: calendar.reminders
              name: Reminders
              color: red
              filter: ${ REMCAL }
          days: month
          startingDay: Monday
          dayFormat: >-
            ' <span class="todayx" style="display: block; text-align: right;">'d'</span>'
          hideWeekend: false
          noCardBackground: false
          compact: false
          weather:
            showCondition: true
            showTemperature: true
          locale: en
          showLocation: true
          hidePastEvents: false
          hideDaysWithoutEvents: false
          hideTodayWithoutEvents: false
          combineSimilarEvents: true
          showLegend: false
          legendToggle: false
          showNavigation: true
          texts:
            monday: Mon
            tuesday: Tue
            wednesday: Wed
            thursday: Thu
            friday: Fri
            saturday: Sat
            sunday: Sun
            yesterday: ''
            today: ⭐TODAY⭐
            tomorrow: ''
          card_mod:
            style: |
              ha-card {
                padding: 0 !important;
                .container .navigation {
                    position: relative;
                    font-size: 27px;
                    padding: 0 !important;
                }
                .event.past {
                  opacity: .2;
                  background-color: gray !important;
                }
                .time {
                  color: #333333 !important;
                  font-size: 0.8em !important;
                }
                .event {
                  color: #333333 !important;
                  line-height: 16px !important;
                  background-color: var(--border-color) !important;
                  border-radius: 10px !important;
                  max-height: 80px !important;
                  overflow: hidden !important;
                  font-size: .9em !important;
                }
                .none {
                  background-color: transparent !important;
                }
                .today .number {
                  border-radius: 5px;
                  padding-left: 4px;
                  padding-right: 4px;        
                }
                .day .date .number {
                  font-weight: bold !important;
                  font-size: 2em !important;
                }
                .ddd {
                  font-weight: bold !important;
                  font-size: 2em !important;
                  margin-right: 10px;
                }
                .todayx {
                  font-weight: bold !important;
                  font-size: 2em !important;
                  margin-right: 10px;
                }
                .today .todayx {
                  background-color: orange !important;
                }
                .today .ddd {
                  background-color: orange !important;
                }        
                .day {
                  --background-color: red;
                  border: solid 1px whitesmoke;
                  font-weight: bold !important;
                  padding: 0.2%;
                  width: 12% !important;
                }
                .month {
                  font-size: 30px !important;
                  margin-bottom: 1px;
                }

                /* THIS SECTION ALLOWS ME TO ADD THE DAYS AS STATIC HEADERS LIKE A TRADITIONAL CALENDAR */
                /* 1. Create the gap for the header */
                .navigation {
                  margin-bottom: 75px !important;
                }

                /* 2. Put the header on the container (Safer) */
                .container {
                  width: 100% !important;
                  position: relative;
                  max-width: none !important;
                }

                .container::before {
                  content: ""; /* We leave this empty now */
                  position: absolute;
                  top: 70px; 
                  left:48%;
                  transform: translateX(-50%);
                  
                /* Match the width of your 7 boxes (7 * 12% = 84%) */
                  width: 96%; 
                  height: 45px;
                  z-index: 1;

                /* THE MAGIC: An SVG with 7 independent text positions */
                /* Change the x='...' values below to nudge days left or right */
                  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 40'%3E%3Cstyle%3E text %7B font: bold 22px sans-serif; fill: %23888; text-anchor: middle; text-transform: uppercase; %7D %3C/style%3E%3Ctext x='72' y='30'%3EMON%3C/text%3E%3Ctext x='215' y='30'%3ETUE%3C/text%3E%3Ctext x='360' y='30'%3EWED%3C/text%3E%3Ctext x='500' y='30'%3ETHU%3C/text%3E%3Ctext x='645' y='30'%3EFRI%3C/text%3E%3Ctext x='790' y='30'%3ESAT%3C/text%3E%3Ctext x='930' y='30'%3ESUN%3C/text%3E%3C/svg%3E") no-repeat;
                  background-size: contain;

                /* THE BAR STYLING */
                  background-color: rgba(155, 155, 155, 0.15);
                  border-radius: 8px;
                }