A Date with Edge Delivery: Putting Calendars on the Web, Twice

For sites that connect the digital world with the real world, calendars are essential. Edge Delivery Services provides multiple ways to implement calendars, and this post showcases two distinct approaches that are currently in use.

Lightweight Calendar for AEM Community Events: Dominik's Delight (and Ours!)

For those who are regular attendees of our Discord calls, you know Dominik. He's the mastermind behind our event calendar, and he's got a lot on his plate! Not only does he manage the event schedule in Discord, but he also needs to make sure the information is available in our team calendars (so we don't miss a thing!) and published on the AEM.live website (https://www.aem.live/community#recent-recordings).

Our goal? To make Dominik's life—and ours—easier by streamlining this entire process. We want it to be smooth, simple, and efficient, reusing existing code and functionality whenever possible. As we like to say, "No code is better than some code, and some code is better than much code!"

The Idea Behind the Automation:

We aimed to minimize manual intervention and save Dominik time. Updating event details manually in multiple places is tedious and error-prone. We needed a solution that would automate as much of the process as possible.

How It Works: Streamlining the Flow

Here's the simplified workflow:

  1. Dominik creates and sets up a Discord event.
  2. Dominik hosts the event and records it.
  3. The recording, along with all its details, is uploaded to our YouTube channel.

And that's it! The rest is automated. Our Zapier workflow takes over, grabbing the event details and publishing them directly to the "recent-recordings" section of AEM.live. This keeps our site up-to-date without requiring Dominik to lift a finger.

Diving Deeper into the Automation

If you're interested in the specifics, you can find the detailed Zapier workflow setup here: https://github.com/asthabh23/helix-website/blob/issue-646/blocks/feed/README.md#workflow. The feed block (part of the block party) pulls in the recording data and displays it in the correct order, newest first.

The Results: Happy Dominik, Happy Team

This implementation embodies key Edge Delivery Services goals:

  1. Ease of Authoring: Dominik no longer has to juggle multiple systems.
  2. Significant Time Savings: We've reduced his publishing effort by an estimated 50%.
  3. Code Reuse: We're leveraging existing Zapier workflows and the feed block, reducing the need to write new code.

Master Calendar for a Local Government: From Single Stream to City-Wide Schedule

It's one thing to build a calendar for a small team, or even just Dominik, but it's a different challenge entirely to create a comprehensive system for a whole organization. That's exactly what we faced when tasked with building a master calendar for a local government. This wasn't just about listing dates; it was about creating a robust, scalable solution that could handle the complex needs of a large and diverse entity.

The Challenge of Scale

The task was to create a calendar system that could manage events for over 40 departments, each with unique schedules and requirements. This included providing individual department calendar URLs and aggregating all events onto a central dashboard. The system also needed to support granular user permissions, multiple event design formats, recurring events, and homepage event featuring.

Our Approach: Finding Order in Complexity

To tackle this challenge, we took a thoughtful approach, prioritizing simplicity and scalability. We began by leveraging document-based authoring to create event templates that matched the 10+ existing design variants. This made authoring easy and familiar for content creators. Then, we set up 41 SharePoint folders, one for each department, each containing its own event template and index file. This established a clear organizational structure and defined permission boundaries. Next, we centralized all event data in a single "events spreadsheet." Here's where we embraced a bit of a paradox: sometimes, the best way to author a calendar is to use a spreadsheet! It might seem counterintuitive, but this method allowed for easy data management, indexing, and filtering, which were crucial for this project. Finally, we added a "Featured" column to the spreadsheet, empowering site admins to easily flag key events for homepage display.

The Workflow: From Spreadsheet to Screen

The workflow was designed to be as efficient and user-friendly as possible. Users would duplicate the event template within their department's folder, add their event data, and update the metadata in the template. After a quick preview and publish, the event would be added to their department's calendar. Behind the scenes, all events were indexed onto a raw_index sheet, and then automatically copied to the shared-default sheet. Site admins would then review the shared-default sheet and mark important events as "featured." Those "featured" events would automatically appear as cards on the homepage, keeping the community informed about key happenings.

The Outcome: A Unified Calendar for a Diverse Organization

The implemented calendar solution consolidated events from all departments into a centralized master calendar, with user/group permissions and support for various event formats. The workflow was simplified, and adding new departments or events is easy.

For more details, check out this repo: https://github.com/meejain/calendar-demo/blob/main/templates/calendar/README.md and the live demo linked.

Want to see a demo of how these implementations work?

Check the recording of the Discord session below where we dived deeper into these workflows. Happy Learning!

recording