Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Epic: Meeting and event publishing workflow #35

Open
3 of 5 tasks
WhiteHoodHacker opened this issue Mar 25, 2023 · 7 comments
Open
3 of 5 tasks

Epic: Meeting and event publishing workflow #35

WhiteHoodHacker opened this issue Mar 25, 2023 · 7 comments
Assignees
Labels
cms Requires changes to CMS backend epic Large collection of changes feature New feature or request site: sigpwny.com Related to sigpwny.com site
Milestone

Comments

@WhiteHoodHacker
Copy link
Member

WhiteHoodHacker commented Mar 25, 2023

It would be nice to streamline our entire meeting publication workflow:

  • The only input is adding a meeting markdown file on the site repo #129
  • We have some GitHub Action or webhook workflow that will do the following:
    • Immediately: A calendar event is created to be published to a public Google Calendar, which members can subscribe to (Add iCalendar generation #128)
    • Immediately: A Discord event is created on the server through pwnybot
    • (For the above immediate actions, checks should be performed to ensure that we do not duplicate events if there are updates to the meeting or multiple pushes)
    • pwnybot or a Discord webhook sends the link to the meeting in #meetings. This could happen automatically 15 minutes before the meeting or at time of meeting. This can also be dynamic based on when slides/videos are uploaded. Or as mentioned below, it can be manually triggered via the featured field or equivalent. (Send meeting link to Discord via webhook or pwnybot #130)
@WhiteHoodHacker WhiteHoodHacker added the feature New feature or request label Mar 25, 2023
@reteps
Copy link
Member

reteps commented May 19, 2023

Probably wait for #52 to do this

@reteps
Copy link
Member

reteps commented Jun 1, 2023

Are we showing the google calendar on the website?

@WhiteHoodHacker
Copy link
Member Author

I wasn't planning on it, no. I was thinking that for any upcoming meetings or competitions that we're participating in, we would render that information in our own way. We can add a calendar if we want, but I refuse to display the calendar in Google embed form because it's so ugly 😭.

@WhiteHoodHacker
Copy link
Member Author

More notes (from May 29th, 2023):
image

Currently, we don't have a solution for Google Calendar or Discord Guild Scheduled Events integrations. For Google Calendar, it could be possible to create a Pipedream workflow that triggers via a GitHub commit with a new/modified event. For Discord, we would need to implement this functionality into pwnybot.

@WhiteHoodHacker WhiteHoodHacker changed the title Meeting publishing workflow Meeting and event publishing workflow Jul 24, 2023
@WhiteHoodHacker WhiteHoodHacker added the cms Requires changes to CMS backend label Jul 24, 2023
@WhiteHoodHacker
Copy link
Member Author

The best way to implement this is probably to add RSS feed support, then create a GitHub Action which is capable of:

  • Detecting newly added meetings/events in the past week or in the future, then adding them to Google Calendar/Discord.
  • Updating already existing Google Calendar/Discord events (will require storing state for mapping of RSS GUID to Google Calendar event IDs and Discord event IDs, likely a separate git branch).
  • Customization of RSS fields used to determine whether a calendar event needs to update (content hash).
  • Modification protections: if a single commit changes more than x number of meetings/events, updates to Google Calendar/Discord are not performed since it can be assumed that there is some sort of site refactor. There could be a manual Action to forcefully send these updates.

@WhiteHoodHacker
Copy link
Member Author

On second thought, this is a horrible way to implement this.

The actual best practice would be to generate an iCalendar (.ics) file and make it available at an endpoint. Then we create a Google Calendar which subscribed to that iCalendar.

It also doesn't look like Google Calendar is able to sync iCalendars immediately (supposedly every 8 hours), so we can combine it with this Google Apps Script to trigger a sync after the site builds: https://github.com/derekantrican/GAS-ICS-Sync

We can also split calendars by year to allow more flexibility.

@WhiteHoodHacker WhiteHoodHacker pinned this issue Jul 28, 2023
@WhiteHoodHacker WhiteHoodHacker changed the title Meeting and event publishing workflow Epic: Meeting and event publishing workflow Jul 28, 2023
@WhiteHoodHacker WhiteHoodHacker added the epic Large collection of changes label Jul 28, 2023
@WhiteHoodHacker WhiteHoodHacker self-assigned this Jul 31, 2023
@WhiteHoodHacker WhiteHoodHacker removed this from the FA2023 milestone Jan 3, 2024
@WhiteHoodHacker
Copy link
Member Author

New solution for Google Calendar syncing:

We simply use the Google Calendar API to import the website's built ICS file into a shared Google Calendar. This essentially creates a clone of the web calendar that lives on Google Calendar and we can update at will - except this time the updates will propagate instantly for other participants of the Google Calendar.

Updates can be triggered via GitHub Action or a CI platform after a site build, so there is no need to host a service which is constantly polling for calendar updates. Also, because event IDs are shared between the calendars, events wouldn't be duplicated on each import, just updated with new info if found.

@WhiteHoodHacker WhiteHoodHacker added this to the FA2024 milestone Jul 10, 2024
@WhiteHoodHacker WhiteHoodHacker added the site: sigpwny.com Related to sigpwny.com site label Aug 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cms Requires changes to CMS backend epic Large collection of changes feature New feature or request site: sigpwny.com Related to sigpwny.com site
Projects
None yet
Development

No branches or pull requests

2 participants