<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dan Ott</title>
    <description>The latest articles on DEV Community by Dan Ott (@danieltott).</description>
    <link>https://dev.to/danieltott</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F361768%2Fd8269841-6e17-417a-9ff8-0917f21db58c.jpg</url>
      <title>DEV Community: Dan Ott</title>
      <link>https://dev.to/danieltott</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/danieltott"/>
    <language>en</language>
    <item>
      <title>Virtual Coffee Hacktoberfest 2023 Roundup</title>
      <dc:creator>Dan Ott</dc:creator>
      <pubDate>Thu, 09 Nov 2023 15:16:02 +0000</pubDate>
      <link>https://dev.to/virtualcoffee/virtual-coffee-hacktoberfest-2023-roundup-18cj</link>
      <guid>https://dev.to/virtualcoffee/virtual-coffee-hacktoberfest-2023-roundup-18cj</guid>
      <description>&lt;p&gt;Another Hacktoberfest has come and gone! &lt;/p&gt;

&lt;p&gt;This was Virtual Coffee's fourth (fourth!!) Hacktoberfest (🤯🤯🤯) and it was another great one! Our members knocked it out of the park as usual, and we wanted to take a moment to celebrate!&lt;/p&gt;

&lt;p&gt;Our Virtual Coffee Hacktoberfest Initiative (VCHI) is an annual event where our members come together to help each other contribute to Open Source and hopefully complete &lt;a href="https://hacktoberfest.com"&gt;Digital Ocean's Hacktoberfest Challenge&lt;/a&gt;. Some of our members are maintainers of their own repos, some sign up as mentors for members who are new to open source, and some sign up just to get Hacktoberfesting!&lt;/p&gt;

&lt;p&gt;This year's Virtual Coffee Hacktoberfest Initiative was sponsored by &lt;a href="https://dub.sh/PWT19Ra"&gt;Clerk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dub.sh/PWT19Ra"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F20ereu948wozj024fgqg.png" alt="Clerk - More than authentication. Complete user management." width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also sponsoring VCHI 2023 were a few amazing individual sponsors: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ayu Adiati&lt;/li&gt;
&lt;li&gt;James Q Quick&lt;/li&gt;
&lt;li&gt;Ian Douglas&lt;/li&gt;
&lt;li&gt;Dominic Duffin&lt;/li&gt;
&lt;li&gt;Jessica Wilkins&lt;/li&gt;
&lt;li&gt;Clark Sell&lt;/li&gt;
&lt;li&gt;&lt;a href="https://levelupfinancialplanning.com/"&gt;LevelUP Financial planning&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;This year our amazing volunteer Monthly Challenge Team helping the maintainers out running things - so a very special &lt;strong&gt;✨ thank you ✨&lt;/strong&gt; to &lt;a class="mentioned-user" href="https://dev.to/dominicduffin1"&gt;@dominicduffin1&lt;/a&gt;, &lt;a class="mentioned-user" href="https://dev.to/adiatiayu"&gt;@adiatiayu&lt;/a&gt; and &lt;a class="mentioned-user" href="https://dev.to/jarvisscript"&gt;@jarvisscript&lt;/a&gt;. And one more HUGE shoutout to &lt;a href="https://selfteach.me/"&gt;Amy Dutton&lt;/a&gt; who designed our Virtual Coffee Hacktoberfest shirt--used as the cover image here.&lt;/p&gt;




&lt;p&gt;We kicked off the month with &lt;a href="https://www.youtube.com/playlist?list=PLh9uT23TA65izPcbITEldxTcIhNuBypPt"&gt;three great Hacktoberfest/Open Source videos&lt;/a&gt; and an &lt;a href="https://virtualcoffee.io/podcast"&gt;entire season of open source related podcast episodes&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=yk7OigN9D-c&amp;amp;list=PLh9uT23TA65izPcbITEldxTcIhNuBypPt&amp;amp;index=2"&gt;Hacktoberfest Initiative Kickoff &lt;/a&gt; with &lt;a class="mentioned-user" href="https://dev.to/danieltott"&gt;@danieltott&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=A7qZwaqBC00&amp;amp;list=PLh9uT23TA65izPcbITEldxTcIhNuBypPt&amp;amp;index=4"&gt;How to Discover Open Source Projects That Align with Your Needs and Goals&lt;/a&gt; with &lt;a class="mentioned-user" href="https://dev.to/codergirl1991"&gt;@codergirl1991&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.youtube.com/watch?v=b2d84LhlW6Q&amp;amp;list=PLh9uT23TA65izPcbITEldxTcIhNuBypPt&amp;amp;index=5"&gt;How to best prepare as a maintainer for Hacktoberfest&lt;/a&gt; with &lt;a class="mentioned-user" href="https://dev.to/codergirl1991"&gt;@codergirl1991&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We had 43 members sign up as contributors, repository maintainers, and mentors. Here are some cool stats and shoutouts from VCHI 2023:&lt;/p&gt;




&lt;h2&gt;
  
  
  Mentors:
&lt;/h2&gt;

&lt;p&gt;Our mentors are one of the biggest parts of what we do at VC for Hacktoberfest. They each have one or more mentees and spend the month helping people start their open source journey. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✨ Thank you ✨&lt;/strong&gt; to our amazing mentors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BekahHW&lt;/li&gt;
&lt;li&gt;Ryan Kahn&lt;/li&gt;
&lt;li&gt;Michael Jolley&lt;/li&gt;
&lt;li&gt;Jessica Wilkins &lt;/li&gt;
&lt;li&gt;Meg Gutshall&lt;/li&gt;
&lt;li&gt;Aishwarya Mali&lt;/li&gt;
&lt;li&gt;Ayu Adiati&lt;/li&gt;
&lt;li&gt;Marie Antons&lt;/li&gt;
&lt;li&gt;Justin Wheeler&lt;/li&gt;
&lt;li&gt;James Curran&lt;/li&gt;
&lt;li&gt;Dan Ott&lt;/li&gt;
&lt;li&gt;Kirk Shillingford&lt;/li&gt;
&lt;li&gt;David Alpert&lt;/li&gt;
&lt;li&gt;Derek Johnston&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Maintainers:
&lt;/h2&gt;

&lt;p&gt;Some of our members signed up as open source maintainers - these members (and all of the Hacktoberfest maintainers) spend a lot of time on their projects behind the scenes, preparing their repositories and helping contributors be successful. For the 11 repos our participating members are maintaining, they merged &lt;strong&gt;427 pull requests&lt;/strong&gt; from &lt;strong&gt;217 unique contributors&lt;/strong&gt; 🤯🤯🤯.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✨ Thank you ✨&lt;/strong&gt; to our awesome maintainers:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/BekahHW"&gt;BekahHW&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/open-sauced/docs"&gt;open-sauced/docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/open-sauced/intro"&gt;open-sauced/intro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/open-sauced/guestbook"&gt;open-sauced/guestbook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/open-sauced/pizza-verse"&gt;open-sauced/pizza-verse&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/michaeljolley"&gt;michaeljolley&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/MichaelJolley/vscode-vs-outlining"&gt;MichaelJolley/vscode-vs-outlining&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MichaelJolley/vscode-twitch-themer"&gt;MichaelJolley/vscode-twitch-themer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/MichaelJolley/discord-guy-bot"&gt;MichaelJolley/discord-guy-bot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/jdwilkin4"&gt;jdwilkin4&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site"&gt;freeCodeCamp/Developer_Quiz_Site&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/cmcrawford2"&gt;cmcrawford2&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/cmcrawford2/memory-game"&gt;cmcrawford2/memory-game&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/Terieyenike"&gt;Terieyenike&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Terieyenike/linktree"&gt;Terieyenike/linktree&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/ClJarvis"&gt;ClJarvis&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/ClJarvis/Hello_There"&gt;ClJarvis/Hello_There&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/TarynMcMillan"&gt;TarynMcMillan&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/TarynMcMillan/Tiny-Troves-of-Dev-Wisdom"&gt;TarynMcMillan/Tiny-Troves-of-Dev-Wisdom&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/dominicduffin1"&gt;dominicduffin1&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/dominicduffin1/python-turtle-art-canvas"&gt;dominicduffin1/python-turtle-art-canvas&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/tkshill"&gt;tkshill&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/tkshill/rpg-session"&gt;tkshill/rpg-session&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/zo0o0ot"&gt;zo0o0ot&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/hacktoberfesthowto/howto-blog"&gt;hacktoberfesthowto/howto-blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/danieltott"&gt;danieltott&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Virtual-Coffee/podcast-transcripts"&gt;Virtual-Coffee/podcast-transcripts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  VirtualCoffee.io:
&lt;/h2&gt;

&lt;p&gt;Every year for Hacktoberfest, we prepare a special issue that members can contribute to to get them started towards Hacktoberfest. We also try to create a number of other issues like new features, bug fixes, and general improvements throughout the month.&lt;/p&gt;

&lt;p&gt;On the &lt;a href="https://github.com/VirtualCoffee.io"&gt;VirtualCoffee.io repo&lt;/a&gt; in the month of October 2023: &lt;strong&gt;46 members&lt;/strong&gt; made 69 pull requests, &lt;strong&gt;14&lt;/strong&gt; of which were new features or other improvements to the site.&lt;/p&gt;

&lt;p&gt;Amazing!&lt;/p&gt;




&lt;h2&gt;
  
  
  Contributions:
&lt;/h2&gt;

&lt;p&gt;Of the 46 members that signed up, &lt;strong&gt;44 members had at least one accepted pull request in a repository participating in Hacktoberfest&lt;/strong&gt;, and we collectively created &lt;strong&gt;232 pull requests&lt;/strong&gt; across &lt;strong&gt;57 repositories&lt;/strong&gt; in the month of October.&lt;/p&gt;

&lt;p&gt;This is incredible. We are so proud of everyone who contributed, whether this is their first time in open source or they've been keeping all their squares green for years.&lt;/p&gt;




&lt;p&gt;We were able to tally up everyone's contributions - here are all of the Hacktoberfest pull requests that our members made this month:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/CBID2"&gt;Christine Belzie&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;34&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;59&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;2564&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;121&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;19&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/rupali-codes/LinksHub"&gt;rupali-codes/LinksHub&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/rupali-codes/LinksHub/pull/2167"&gt;feat: adding Aftab to Codeowners file&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/rupali-codes/LinksHub/pull/1830"&gt;fix: revise errors in CODEOWNERS file&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1079"&gt;feat: Adding all contributors&lt;/a&gt; - 5 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/TBD54566975/developer.tbd.website"&gt;TBD54566975/developer.tbd.website&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/TBD54566975/developer.tbd.website/pull/942"&gt;feat: create code snippets file for update dwn&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/YurisCodingClub/accessibility-mentor"&gt;YurisCodingClub/accessibility-mentor&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/YurisCodingClub/accessibility-mentor/pull/62"&gt;fix: revised layout of the website&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/YurisCodingClub/accessibility-mentor/pull/60"&gt;fix: revise format in feature.yml file &lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/YurisCodingClub/accessibility-mentor/pull/58"&gt;fix: revise the format of doc.yml file&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/YurisCodingClub/accessibility-mentor/pull/42"&gt;feat: creating a footer&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/YurisCodingClub/accessibility-mentor/pull/24"&gt;feat: add issue template for docs&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/github/docs"&gt;github/docs&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/github/docs/pull/29464"&gt;feat: add info on what should occur post-transfer&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/github/docs/pull/29247"&gt;feat: add info about convert tasks into issues&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/github/docs/pull/29193"&gt;feat: adding mentions about forking back after transferring repos&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/github/docs/pull/28870"&gt;docs(feat): add content on how to set an organization profile picture using Gravatar &lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/arc53/DocsGPT"&gt;arc53/DocsGPT&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/arc53/DocsGPT/pull/709"&gt;feat: made color accessible&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/guestbook"&gt;open-sauced/guestbook&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/guestbook/pull/159"&gt;fix: removing the "t" in the first heading&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/guestbook/pull/133"&gt;feat: add CODEOWNERS file&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/guestbook/pull/116"&gt;feat: adding translation rules to README&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/The-Alice-In-Wonderland-Project/alicegame-2023"&gt;The-Alice-In-Wonderland-Project/alicegame-2023&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/The-Alice-In-Wonderland-Project/alicegame-2023/pull/13"&gt;feat: adding information about contributors and team leads &lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/The-Alice-In-Wonderland-Project/alicegame-2023/pull/5"&gt;docs: add team file&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/forem/forem"&gt;forem/forem&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/forem/forem/pull/20258"&gt;docs: making updates to Editor Guide&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/intro"&gt;open-sauced/intro&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/intro/pull/75"&gt;feat: add "Edit this Page" link&lt;/a&gt; - 11 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/docs"&gt;open-sauced/docs&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/docs/pull/191"&gt;feat: add Connections feature page&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/AccessibleForAll/AccessibleWebDev"&gt;AccessibleForAll/AccessibleWebDev&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/AccessibleForAll/AccessibleWebDev/pull/377"&gt;feat: add chart&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Codecademy/docs"&gt;Codecademy/docs&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Codecademy/docs/pull/3472"&gt;feat: add entry about cherry-pick&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/shesharpnl/knowledge-hub"&gt;shesharpnl/knowledge-hub&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/shesharpnl/knowledge-hub/pull/30"&gt;feat: add content about non-code contributions&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/shesharpnl/knowledge-hub/pull/29"&gt;feat: add content for first and second section&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/shesharpnl/knowledge-hub/pull/28"&gt;feat: add Open Source page&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/pizza-verse"&gt;open-sauced/pizza-verse&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/pizza-verse/pull/25"&gt;feat: add information about New York City pizza&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/EddieHubCommunity/BioDrop"&gt;EddieHubCommunity/BioDrop&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/EddieHubCommunity/BioDrop/pull/9353"&gt;feat: elaborating on step 8 in open source map&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/marshadkhn/Farmhub"&gt;marshadkhn/Farmhub&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/marshadkhn/Farmhub/pull/34"&gt;Update greetings.yml&lt;/a&gt; - 0 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/marshadkhn/Farmhub/pull/31"&gt;feat: add permissions value&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/marshadkhn/Farmhub/pull/18"&gt;feat: add pull request template&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/marshadkhn/TinDog"&gt;marshadkhn/TinDog&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/marshadkhn/TinDog/pull/38"&gt;fix: revise greeting&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site"&gt;freeCodeCamp/Developer_Quiz_Site&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/702"&gt;feat: add questions about some ARIA roles and best practices to accessibility quiz&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/adiati98"&gt;Ayu Adiati&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;22&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;44&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;2012&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;249&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;9&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1077"&gt;feature: Add November 2023 Challenge&lt;/a&gt; - 7 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1066"&gt;Update Accountabilibuddies Leaders and Times&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1057"&gt;chores: Add VC-Verified Repositories to the List in October Challenge Page&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1026"&gt;chores: Update Ayu's profile for Hacktoberfest 2023&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1025"&gt;feat: Add October 2023 Newsletter&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1016"&gt;Update content in October challenge page&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/994"&gt;Feature/update monthly challenge page to Hacktoberfest&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/pizza-verse"&gt;open-sauced/pizza-verse&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/pizza-verse/pull/56"&gt;Add a Resolving Merge Conflicts section to the README&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/pizza-verse/pull/54"&gt;Update rules and steps to contribute in the README&lt;/a&gt; - 5 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/shesharpnl/hackathon-2023.react-js.base-example"&gt;shesharpnl/hackathon-2023.react-js.base-example&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/shesharpnl/hackathon-2023.react-js.base-example/pull/17"&gt;Fix the broken link to contributing guidelines&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/shesharpnl/hackathon-2023.react-js.base-example/pull/15"&gt;Update the Contributing section in the README.md&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/shesharpnl/.github"&gt;shesharpnl/.github&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/shesharpnl/.github/pull/10"&gt;Update pull_request_template.md&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/shesharpnl/.github/pull/9"&gt;chores: Improve Docs to Update the Rules&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/shesharpnl/.github/pull/8"&gt;fix: Format of the type of PR&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/shesharpnl/.github/pull/5"&gt;Feat: Add Comment Out to Issue Templates&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/shesharpnl/hackathon-2023.vanilla-js.base-example"&gt;shesharpnl/hackathon-2023.vanilla-js.base-example&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/shesharpnl/hackathon-2023.vanilla-js.base-example/pull/4"&gt;Update the Contributing section in the README.md&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/shesharpnl/knowledge-hub"&gt;shesharpnl/knowledge-hub&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/shesharpnl/knowledge-hub/pull/36"&gt;Add Working With Issues section in CONTRIBUTING.md&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/guestbook"&gt;open-sauced/guestbook&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/guestbook/pull/123"&gt;docs: Add "Keeping Branch Up to Date and Resolving Merge Conflicts" section&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/podcast-transcripts"&gt;Virtual-Coffee/podcast-transcripts&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/podcast-transcripts/pull/109"&gt;docs: Update README and Transcriptions Guideline&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/podcast-transcripts/pull/108"&gt;Add pull request template&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/hacktoberfest"&gt;Virtual-Coffee/hacktoberfest&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/hacktoberfest/pull/26"&gt;Fix: Link to the Website&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/hacktoberfest/pull/25"&gt;Update content in "What is Hacktoberfest" section&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/zo0o0ot"&gt;Ross Larson&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;20&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;130&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;34283&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;48&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022"&gt;Leagify/prospect-scraper-mddb-2022&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022/pull/81"&gt;Adds 10-30 ranks&lt;/a&gt; - 6 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022/pull/80"&gt;Adds 10-25 ranks&lt;/a&gt; - 6 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022/pull/79"&gt;Adds 10-22 ranks&lt;/a&gt; - 6 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022/pull/78"&gt;Adds 10-19&lt;/a&gt; - 6 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022/pull/77"&gt;Updates name of github action&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022/pull/76"&gt;Small devcontainer updates&lt;/a&gt; - 14 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022/pull/74"&gt;Adds 10-13 ranks&lt;/a&gt; - 6 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022/pull/73"&gt;Adds 10-11 ranks&lt;/a&gt; - 6 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022/pull/72"&gt;Adds 10-9 ranks&lt;/a&gt; - 6 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022/pull/71"&gt;10-4 and 10-7 ranks&lt;/a&gt; - 9 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022/pull/70"&gt;Adds 10-2 ranks&lt;/a&gt; - 6 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022/pull/68"&gt;Updated merges and new ranks for October 1&lt;/a&gt; - 6 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/zo0o0ot/prospect-scraper-mddb-2022"&gt;zo0o0ot/prospect-scraper-mddb-2022&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/zo0o0ot/prospect-scraper-mddb-2022/pull/3"&gt;Merge pull request #77 from zo0o0ot/main&lt;/a&gt; - 0 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/zo0o0ot/prospect-scraper-mddb-2022/pull/2"&gt;Merge pull request #67 from zo0o0ot/main&lt;/a&gt; - 0 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/sermonarchives/blog"&gt;sermonarchives/blog&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/sermonarchives/blog/pull/66"&gt;Adds sermons 0097 and 0098&lt;/a&gt; - 6 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/sermonarchives/blog/pull/65"&gt;Adds sermons 0094, 0095, and 0096&lt;/a&gt; - 7 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/sermonarchives/blog/pull/64"&gt;Updates procedure, adds sermons 0092 and 0093&lt;/a&gt; - 9 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/sermonarchives/blog/pull/63"&gt;Adds documentation for adding sermons.&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/sermonarchives/blog/pull/62"&gt;Adds sermon 0091 - Seeing God's Love in a Cross.&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Leagify/historical-nfl-draft-data"&gt;Leagify/historical-nfl-draft-data&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Leagify/historical-nfl-draft-data/pull/7"&gt;New tech for compiling draft data&lt;/a&gt; - 27 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/jdwilkin4"&gt;Jessica Wilkins &lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;12&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;50&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;6875&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;75&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/withastro/docs"&gt;withastro/docs&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/withastro/docs/pull/5234"&gt;docs: clarifying how dates work in frontmatter for content collections page&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/withastro/docs/pull/5131"&gt;Clarify the use of the base parameter for deployment to GitHub Pages&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/withastro/docs/pull/5042"&gt;Add recipe for using getImage() and creating custom component &lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/freeCodeCamp/freeCodeCamp"&gt;freeCodeCamp/freeCodeCamp&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/freeCodeCamp/pull/52129"&gt;fix(curriculum): resolving typos and small bugs in JS RPG game&lt;/a&gt; - 5 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/freeCodeCamp/pull/52088"&gt;feat: adding date formatter project for new JS curriculum &lt;/a&gt; - 27 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/freeCodeCamp/pull/52023"&gt;feat: adding intros for new JS curriculum&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/freeCodeCamp/pull/51960"&gt;fix: missing intro for cat painting&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/guestbook"&gt;open-sauced/guestbook&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/guestbook/pull/157"&gt;fix: translation guide updates&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/guestbook/pull/156"&gt;fix: Unknown contribution type error when running npm run contributors:add locally&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/docs"&gt;open-sauced/docs&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/docs/pull/197"&gt;docs: adding section for the Hot OpenSauced Project&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/docs/pull/192"&gt;feat: creating separate section for setting up repo with Git&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1008"&gt;chore: updating jdwilkin4 profile and adding location on the map&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/BekahHW"&gt;BekahHW&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;11&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;46&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;1395&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;1187&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/docs"&gt;open-sauced/docs&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/docs/pull/201"&gt;feat: Reorganize docs&lt;/a&gt; - 27 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/docs/pull/193"&gt;feat: Add lists to docs&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/docs/pull/187"&gt;fix: Change title and sidebar&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/guestbook"&gt;open-sauced/guestbook&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/guestbook/pull/164"&gt;fix: Remove duplicate word as a contributor&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/guestbook/pull/163"&gt;Update intro_course_contributor.yml&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/guestbook/pull/135"&gt;fix: Remove dependency as a contributor&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/guestbook/pull/131"&gt;fix: Remove extra guestbook folder as a contributor&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/guestbook/pull/130"&gt;fix: Remove checks for first time contributors&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/guestbook/pull/127"&gt;feat: Add GitHub Action as a contributor&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/intro"&gt;open-sauced/intro&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/intro/pull/59"&gt;feat: update clarity&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1028"&gt;Update member profile with location&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/Satoshi-Sh"&gt;Satoshi S.&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;11&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;16&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;285&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;152&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;8&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/app"&gt;open-sauced/app&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/app/pull/1942"&gt;fix: Modify Button Text&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/app/pull/1881"&gt;fix: Unnecesary X-Scrollbar in tablist&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site"&gt;freeCodeCamp/Developer_Quiz_Site&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/822"&gt;Added a quiz about relative unit to accessibilityQuiz&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/hacktoberfesthowto/howto-blog"&gt;hacktoberfesthowto/howto-blog&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/hacktoberfesthowto/howto-blog/pull/42"&gt;Updated NavLink and Index Page&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/hacktoberfesthowto/howto-blog/pull/41"&gt;Added the repository link to Index page.&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/pizza-verse"&gt;open-sauced/pizza-verse&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/pizza-verse/pull/33"&gt;Added a Japanese-Style pizza&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/guestbook"&gt;open-sauced/guestbook&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/guestbook/pull/113"&gt;Added Satoshi&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/TarynMcMillan/Tiny-Troves-of-Dev-Wisdom"&gt;TarynMcMillan/Tiny-Troves-of-Dev-Wisdom&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/TarynMcMillan/Tiny-Troves-of-Dev-Wisdom/pull/6"&gt;Added Satoshi's Advice&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/dominicduffin1/python-turtle-art-canvas"&gt;dominicduffin1/python-turtle-art-canvas&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/dominicduffin1/python-turtle-art-canvas/pull/7"&gt;Added a baseto the drawing&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/dominicduffin1/python-turtle-art-canvas/pull/5"&gt;Added instructions for Linux&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1005"&gt;Added Satoshi-Sh&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/michaeljolley"&gt;Michael Jolley&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;8&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;149&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;2942&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;8990&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/colbyfayock/cloudinary-util"&gt;colbyfayock/cloudinary-util&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/colbyfayock/cloudinary-util/pull/80"&gt;feat: Generative Replace (#68)&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/michaeljolley/baldbeardedbuilder.com"&gt;michaeljolley/baldbeardedbuilder.com&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/michaeljolley/baldbeardedbuilder.com/pull/9"&gt;V8&lt;/a&gt; - 123 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/michaeljolley/baldbeardedbuilder.com/pull/8"&gt;Adding Brain Dump #13&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/michaeljolley/baldbeardedbuilder.com/pull/7"&gt;Adding new CD GitHub action&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/michaeljolley/baldbeardedbuilder.com/pull/6"&gt;Fixing links on scheduled blog posts&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1042"&gt;Adding Michael Jolley to members&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/octokit/octokit.net"&gt;octokit/octokit.net&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/octokit/octokit.net/pull/2795"&gt;[feat]: Adding missing properties to PushEventPayload&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/octokit/octokit.net/pull/2794"&gt;[feat]: Adding repository variables&lt;/a&gt; - 13 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/5hraddha"&gt;Shraddha&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;7&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;13&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;92&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;44&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/app"&gt;open-sauced/app&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/app/pull/1987"&gt;refactor: Improve UX on Create New List page - &lt;code&gt;/hub/lists/new&lt;/code&gt;&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/app/pull/1909"&gt;fix: Fix horizontal padding /spacing on smaller screens for the Create New List form&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/app/pull/1877"&gt;fix: reset input state of delete list dialog box after closing the dialog and deleting the list&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/app/pull/1851"&gt;refactor: Remove + icon from list contributors stacked avatar&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/app/pull/1811"&gt;fix: Fix re-rendering of Highlights "Repositories" table with duplicates&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/app/pull/1783"&gt;fix: Fix CSS inconsistency in Contributor Highlights for "Home" and "Following" tabs for &lt;code&gt;/feed&lt;/code&gt; route&lt;/a&gt; - 5 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1065"&gt;Add member profile&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/AlexVCS"&gt;Alex Curtis-Slep&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;6&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;16&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;3534&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;25&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;6&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/gocodebox/lifterlms"&gt;gocodebox/lifterlms&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/gocodebox/lifterlms/pull/2553"&gt;removed references to random_answers&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Codess-Cafe/Codess-Website"&gt;Codess-Cafe/Codess-Website&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Codess-Cafe/Codess-Website/pull/16"&gt;update social links that appear on the left side of index.html&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/cuttle-cards/cuttle"&gt;cuttle-cards/cuttle&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/cuttle-cards/cuttle/pull/680"&gt;working on three dialog translation&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/danielschuster-muc/potter-db"&gt;danielschuster-muc/potter-db&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/danielschuster-muc/potter-db/pull/754"&gt;working on adding progress bar&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/rcallaby/Learn-Git"&gt;rcallaby/Learn-Git&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/rcallaby/Learn-Git/pull/138"&gt;Added two images to part 03&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/998"&gt;Update AlexVCS.ts&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/aishwarya-mali"&gt;Aishwarya Mali&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;6&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;322&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;343&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/baekusboo/music-website"&gt;baekusboo/music-website&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/baekusboo/music-website/pull/149"&gt;Changed like icon color in dark mode&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Neel-07/Temperature-Converter"&gt;Neel-07/Temperature-Converter&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Neel-07/Temperature-Converter/pull/33"&gt;Revert and Restyled Tour Button&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/priyanshuverma-dev/SnapLine"&gt;priyanshuverma-dev/SnapLine&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/priyanshuverma-dev/SnapLine/pull/59"&gt;Fixed Username alignment issue&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/priyanshuverma-dev/SnapLine/pull/36"&gt;Fixed Mobile View UI of Create Page&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/999"&gt;Added Hacktoberfest2023 badge and my location to member profile&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/ClJarvis"&gt;Chris Jarvis&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;13&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;3610&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;3178&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/podcast-transcripts"&gt;Virtual-Coffee/podcast-transcripts&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/podcast-transcripts/pull/111"&gt;Cljarvis 4 7 transcript&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/cmcrawford2/memory-game"&gt;cmcrawford2/memory-game&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/cmcrawford2/memory-game/pull/10"&gt;If accepted this will add cards 19-24&lt;/a&gt; - 6 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/cmcrawford2/memory-game/pull/6"&gt;4 New pictures for memory game&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/TarynMcMillan/Tiny-Troves-of-Dev-Wisdom"&gt;TarynMcMillan/Tiny-Troves-of-Dev-Wisdom&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/TarynMcMillan/Tiny-Troves-of-Dev-Wisdom/pull/9"&gt;added dev wisdom&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1004"&gt;Added location to map, added 2023 badge&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/david-001"&gt;David Akim&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;7&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;107&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;12&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/pizza-verse"&gt;open-sauced/pizza-verse&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/pizza-verse/pull/46"&gt;Added a pizza fact&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/guestbook"&gt;open-sauced/guestbook&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/guestbook/pull/112"&gt;docs: add @david-001 as a contributor&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/dominicduffin1/python-turtle-art-canvas"&gt;dominicduffin1/python-turtle-art-canvas&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/dominicduffin1/python-turtle-art-canvas/pull/6"&gt;Added David Akim art - Star&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/TarynMcMillan/Tiny-Troves-of-Dev-Wisdom"&gt;TarynMcMillan/Tiny-Troves-of-Dev-Wisdom&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/TarynMcMillan/Tiny-Troves-of-Dev-Wisdom/pull/4"&gt;Added David's advice&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1006"&gt;Add david akim to members&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/funbunch"&gt;Shannan Bunch&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;246&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;11&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Lasagna-Love-Portal/project-ricotta"&gt;Lasagna-Love-Portal/project-ricotta&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Lasagna-Love-Portal/project-ricotta/pull/63"&gt;Main Header fixes&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/colbyfayock/cloudinary-util"&gt;colbyfayock/cloudinary-util&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/colbyfayock/cloudinary-util/pull/67"&gt;Adding tests for Zoompan.&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/colbyfayock/cloudinary-util/pull/62"&gt;Adding test for remove background&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1055"&gt;Adding profile to member map&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1046"&gt;Adding member profile&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/harshleey"&gt;Wonuola Adekunle-logun&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;10&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;173&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/saintmalik/awesome-oss-docs"&gt;saintmalik/awesome-oss-docs&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/saintmalik/awesome-oss-docs/pull/214"&gt;Added ory docs&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/saintmalik/awesome-oss-docs/pull/211"&gt;Feat: Added netflix docs&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/saintmalik/awesome-oss-docs/pull/210"&gt;Feat: Added the slackhq docs&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/saintmalik/awesome-oss-docs/pull/205"&gt;Feat: Added netlify.js docs&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/saintmalik/awesome-oss-docs/pull/202"&gt;Feat 196/upbound.js docs&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/pedaars"&gt;Aaron Pedwell&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;14&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;36&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;21&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/dyrector-io/dyrectorio"&gt;dyrector-io/dyrectorio&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/dyrector-io/dyrectorio/pull/844"&gt;doc: update development.md, maintainers.md and security.md&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/TarynMcMillan/Tiny-Troves-of-Dev-Wisdom"&gt;TarynMcMillan/Tiny-Troves-of-Dev-Wisdom&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/TarynMcMillan/Tiny-Troves-of-Dev-Wisdom/pull/7"&gt;add new dev wisdoms&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/cmcrawford2/memory-game"&gt;cmcrawford2/memory-game&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/cmcrawford2/memory-game/pull/9"&gt;#2 - add 8 new images for the memory game&lt;/a&gt; - 8 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/intro"&gt;open-sauced/intro&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/intro/pull/65"&gt;#62 - Update README contributing guide to use the guide from this repo&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1021"&gt;add hacktoberfest 2023 badge and location object to pedaars.ts&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/anshumanSathua"&gt;Anshuman Sathua&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;162&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;64&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/baekusboo/music-website"&gt;baekusboo/music-website&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/baekusboo/music-website/pull/165"&gt;Added few songs&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/TarynMcMillan/Tiny-Troves-of-Dev-Wisdom"&gt;TarynMcMillan/Tiny-Troves-of-Dev-Wisdom&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/TarynMcMillan/Tiny-Troves-of-Dev-Wisdom/pull/12"&gt;Added my entry to the Advice.txt&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site"&gt;freeCodeCamp/Developer_Quiz_Site&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/839"&gt;Added a question to general-cs-quiz.ts&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1022"&gt;created my member profile&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/danieltott"&gt;Dan Ott&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;24&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;3693&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;1529&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/hacktoberfest"&gt;Virtual-Coffee/hacktoberfest&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/hacktoberfest/pull/27"&gt;Add support for logging non-PR contributions&lt;/a&gt; - 9 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1075"&gt;Feature/vchi sponsors&lt;/a&gt; - 5 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/997"&gt;Added my location to my member profile&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/996"&gt;Feature/vchi 2023&lt;/a&gt; - 9 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/IntelliJinceTech"&gt;Christopher Jin&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;186&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site"&gt;freeCodeCamp/Developer_Quiz_Site&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/895"&gt;Added 4 questions to the  quality-assurance-quiz.ts file&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/894"&gt;added 4 agile questions to agile-quiz.ts&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/794"&gt;added 3 agile questions relating to bdd, acceptance criteria, and daily standup&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1009"&gt;added chrisjin to members and added location object&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/iotalex"&gt;Alexander Batenhorst&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;74&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;7&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/hacktoberfesthowto/howto-blog"&gt;hacktoberfesthowto/howto-blog&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/hacktoberfesthowto/howto-blog/pull/44"&gt;Add new info2023 - Issue #40 &lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022"&gt;Leagify/prospect-scraper-mddb-2022&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Leagify/prospect-scraper-mddb-2022/pull/75"&gt;Update dot net variant - PR for issue  #69&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1056"&gt;Add yourself to our member map! #995&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1047"&gt;Add Iotalex profile to our Members Page! #13&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/Justin-Quinn51"&gt;Justin Quinn&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;42&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site"&gt;freeCodeCamp/Developer_Quiz_Site&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/890"&gt;Add new linux quiz question to linux-quiz.ts&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/740"&gt;Add new quiz question to sql-quiz.ts&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/pizza-verse"&gt;open-sauced/pizza-verse&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/pizza-verse/pull/57"&gt;Add new pizza fact about toppings&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1015"&gt;Add profile to members page with location&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/meg-gutshall"&gt;Meg Gutshall&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;9&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;126&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;74&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/community-garden-kitchen/feed-mckinney"&gt;community-garden-kitchen/feed-mckinney&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/community-garden-kitchen/feed-mckinney/pull/2"&gt;Begin Adding Translations&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/hacktoberfesthowto/hugo-theme-terminal"&gt;hacktoberfesthowto/hugo-theme-terminal&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/hacktoberfesthowto/hugo-theme-terminal/pull/1"&gt;Create details shortcode&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1070"&gt;Remove defunct website link&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1069"&gt;Update member profile&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/raaynaldo"&gt;Raynaldo Sutisna&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;87&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;7&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/tldr-pages/tldr"&gt;tldr-pages/tldr&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/tldr-pages/tldr/pull/11119"&gt;git-status: add some examples&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/tldr-pages/tldr/pull/11118"&gt;git-alias: add Indonesian translation&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1054"&gt;feat: update member page&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1053"&gt;Add Raynaldo Sutisna to Members&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/rolandolopez"&gt;Rolando Lopez&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;15&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;262&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;27&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/cmcrawford2/memory-game"&gt;cmcrawford2/memory-game&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/cmcrawford2/memory-game/pull/14"&gt;Added a two player option&lt;/a&gt; - 5 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/cmcrawford2/memory-game/pull/13"&gt;centering the game&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/cmcrawford2/memory-game/pull/12"&gt;formatted time to display minutes and seconds&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/cmcrawford2/memory-game/pull/11"&gt;Added a timer&lt;/a&gt; - 8 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/Terieyenike"&gt;Oteri Eyenike&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;8&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;106&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;9&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/dominicduffin1/python-turtle-art-canvas"&gt;dominicduffin1/python-turtle-art-canvas&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/dominicduffin1/python-turtle-art-canvas/pull/8"&gt;Teri art&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/shesharpnl/knowledge-hub"&gt;shesharpnl/knowledge-hub&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/shesharpnl/knowledge-hub/pull/32"&gt;Add: supportive tech org in africa&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/zero-to-mastery/Animation-Nation"&gt;zero-to-mastery/Animation-Nation&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/zero-to-mastery/Animation-Nation/pull/1893"&gt;Animate - move phone slightly&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1007"&gt;Members/terieyenike&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/tgmiller5"&gt;Tammy Miller&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;17&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;238&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;113&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site"&gt;freeCodeCamp/Developer_Quiz_Site&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/905"&gt;feat: Add 10 more incorrect responses to quiz modal&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/819"&gt;chore: Add Exploratory Testing Question&lt;/a&gt; - 12 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/753"&gt;Included quality assurance developer quiz for SDLC&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1034"&gt;Add Tammy Miller to the members pages with location included&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/tkshill"&gt;Kirk Shillingford&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;8&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;53&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;18&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/tkshill/elm-rpg-session"&gt;tkshill/elm-rpg-session&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/tkshill/elm-rpg-session/pull/6"&gt;Dev test&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/tkshill/elm-rpg-session/pull/5"&gt;Create auto-push-dev.yml&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/tkshill/elm-rpg-session/pull/1"&gt;Local pro&lt;/a&gt; - 5 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1030"&gt;Adding to Membership map&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/piotrszymaniec"&gt;Piotrek&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;75&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;9&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/tkshill/elm-rpg-session"&gt;tkshill/elm-rpg-session&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/tkshill/elm-rpg-session/pull/4"&gt;Contributing guide&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1039"&gt;add member card link in map marker popup&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1036"&gt;Add Piotr Szymaniec member profile&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/wheeleruniverse"&gt;Justin Wheeler&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;51&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/open-sauced/pizza-verse"&gt;open-sauced/pizza-verse&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/open-sauced/pizza-verse/pull/43"&gt;Update pizza-facts-&amp;amp;-trivia.md&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site"&gt;freeCodeCamp/Developer_Quiz_Site&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/742"&gt;added new sql quiz questions&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1010"&gt;added me (wheeleruniverse) to members&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/01001101CK"&gt;Yufa &lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;54&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/illacloud/illa-builder"&gt;illacloud/illa-builder&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/illacloud/illa-builder/pull/2517"&gt;Create Job-Seeker-Outreach-Assistant.md&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1003"&gt;Added my member profile and location&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/Arol15"&gt;Lora Rusinouskaya&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;67&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/movesthatmatter/movex"&gt;movesthatmatter/movex&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/movesthatmatter/movex/pull/132"&gt;[libs/movex-react] Add spec for useMovex hook&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1023"&gt;Add new member with badge and location &lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/christina-ml"&gt;Christina Loiacono&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;54&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Codecademy/docs"&gt;Codecademy/docs&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Codecademy/docs/pull/3441"&gt;Update syntax for second parameter in split() method&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1020"&gt;Add new member Christina and location&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/dominicduffin1"&gt;Dominic Duffin&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;98&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;9&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1073"&gt;Add and update redirects for resources pages&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1045"&gt;Update Dominic Duffin profile&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/EvaGraceSmith"&gt;Eva Grace Smith&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;52&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1072"&gt;Members/evagracesmith&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1061"&gt;added my profile&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/abuna1985"&gt;Adam Abundis&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/crowdin/crowdin-api-client-js"&gt;crowdin/crowdin-api-client-js&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/crowdin/crowdin-api-client-js/pull/313"&gt;feat: Add isPublic property to ReportSettings&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/aliaquintero"&gt;Alia Quintero&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;46&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1063"&gt;add member profile&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/ARodriguezHacks"&gt;Angie Rodriguez&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;55&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1024"&gt;Add Angie (ARodriguezHacks) to members&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/brennakh"&gt;Brenna Hettler&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;51&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1027"&gt;Add Brenna's profile to member page&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/charlieintech"&gt;Aishe Ibrahim&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;16&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/shesharpnl/knowledge-hub"&gt;shesharpnl/knowledge-hub&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/shesharpnl/knowledge-hub/pull/31"&gt;added semantic description to social.media page&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/davidgsalgado"&gt;David &lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;52&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1012"&gt;Add David S to members&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/jamescurran"&gt;James Curran&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;61&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1000"&gt;Added JamesCurran profile file&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/jenieg"&gt;Jennifer&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;52&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1001"&gt;created my member page with location&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/radturkin"&gt;Rad Turkin&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;8&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/hacktoberfesthowto/howto-blog"&gt;hacktoberfesthowto/howto-blog&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/hacktoberfesthowto/howto-blog/pull/43"&gt;add 2022 shirt images&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/shiftyp"&gt;Ryan Kahn&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;8&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1019"&gt;Added location for shiftyp&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/TarynMcMillan"&gt;Taryn McMillan&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;52&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/1002"&gt;Add tarynmcmillan to the member list&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>OpenAPI 3.0: How to make objects nullable that use oneOf, allOf, or anyOf</title>
      <dc:creator>Dan Ott</dc:creator>
      <pubDate>Wed, 09 Aug 2023 00:00:00 +0000</pubDate>
      <link>https://dev.to/danieltott/openapi-30-how-to-make-objects-nullable-that-use-oneof-allof-or-anyof-55on</link>
      <guid>https://dev.to/danieltott/openapi-30-how-to-make-objects-nullable-that-use-oneof-allof-or-anyof-55on</guid>
      <description>&lt;p&gt;File this in the "notes to self" category. The &lt;a href="https://swagger.io/docs/specification/about/?limit=10&amp;amp;location=Swagger_Documentation&amp;amp;query=nullable"&gt;OpenAPI docs are very sparse&lt;/a&gt; when it comes to &lt;code&gt;nullable&lt;/code&gt;, and it is very unclear how to set an object to nullable when it uses &lt;code&gt;oneOf&lt;/code&gt;, &lt;code&gt;allOf&lt;/code&gt;, or &lt;code&gt;anyOf&lt;/code&gt; in OpenAPI 3.0.&lt;/p&gt;

&lt;p&gt;I've been working on writing an OpenAPI spec for an existing API, and hooking it in to Postman for our team to use. Unfortunately, Postman was giving me a validation error when making requests, but all it would say was "The response body didn't match the specified schema", with no actual details on which parts of the schema were wrong.&lt;/p&gt;

&lt;p&gt;After much struggle and head-desking, I managed to work it out.&lt;/p&gt;

&lt;p&gt;To review, here is how you would make a property nullable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;myProperty&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
    &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This also works with normal objects:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;myProperty&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
    &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;mySubProperty&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;string&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, if you have an object that uses &lt;code&gt;oneOf&lt;/code&gt;, &lt;code&gt;allOf&lt;/code&gt;, or &lt;code&gt;anyOf&lt;/code&gt;, setting &lt;code&gt;nullable: true&lt;/code&gt; on the object itself will not work.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# this works great&lt;/span&gt;
  &lt;span class="na"&gt;nullableObject&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
    &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;

  &lt;span class="c1"&gt;# this doesn't work&lt;/span&gt;
  &lt;span class="na"&gt;notActuallyNullableObjectWithAllOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
    &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;allOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;anotherId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;

  &lt;span class="c1"&gt;# neither does this&lt;/span&gt;
  &lt;span class="na"&gt;notActuallyNullableObjectWithAnyOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
    &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;anyOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;anotherId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The solution depends on your approach and which of &lt;code&gt;oneOf&lt;/code&gt;, &lt;code&gt;allOf&lt;/code&gt;, or &lt;code&gt;anyOf&lt;/code&gt; you are using.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;oneOf&lt;/code&gt; and &lt;code&gt;anyOf&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;If you are using &lt;code&gt;oneOf&lt;/code&gt; or &lt;code&gt;anyOf&lt;/code&gt;, you're going to have the easiest time. As long as at least one of your specified schemas is nullable, the entire object will be nullable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# oneOf&lt;/span&gt;
&lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# this won't work&lt;/span&gt;
  &lt;span class="na"&gt;notActuallyNullableObjectWithOneOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
    &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;oneOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;anotherId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;

  &lt;span class="c1"&gt;# neither will this&lt;/span&gt;
  &lt;span class="na"&gt;notActuallyNullableObjectWithAnyOfRefs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
    &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;anyOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/SomeReferencedObject'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/AnotherReferencedObject'&lt;/span&gt;

  &lt;span class="c1"&gt;# this works great, since nullable: true is set on the first object&lt;/span&gt;
  &lt;span class="c1"&gt;#&lt;/span&gt;
  &lt;span class="c1"&gt;# important: do not include type: object at the top level&lt;/span&gt;
  &lt;span class="na"&gt;nullableObjectWithOneOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;oneOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;anotherId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
  &lt;span class="na"&gt;nullableObjectWithAnyOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;anyOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;anotherId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, you may run in to a case where you don't want to set &lt;code&gt;nullable: true&lt;/code&gt; on one of the specified schemas. This is fairly common when using &lt;code&gt;$ref&lt;/code&gt; to reference a schema that is also being used elsewhere.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# this won't work&lt;/span&gt;
  &lt;span class="na"&gt;notActuallyNullableObjectWithOneOfRefs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
    &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;oneOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="c1"&gt;# I don't want to edit those schemas to set nullable: true, since they're used elsewhere and my _not_ be nullable&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/SomeReferencedObject'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/AnotherReferencedObject'&lt;/span&gt;

  &lt;span class="c1"&gt;# neither will this&lt;/span&gt;
  &lt;span class="na"&gt;notActuallyNullableObjectWithAnyOfRefs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
    &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;anyOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/SomeReferencedObject'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/AnotherReferencedObject'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The solution here is to add an empty choice to the &lt;code&gt;oneOf&lt;/code&gt; or &lt;code&gt;anyOf&lt;/code&gt; list, and set &lt;code&gt;nullable: true&lt;/code&gt; on that. This becomes a valid choice, and will make the entire object nullable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;nullableObjectWithOneOfRefs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;oneOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="c1"&gt;# empty nullable object&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/SomeReferencedObject'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/AnotherReferencedObject'&lt;/span&gt;
  &lt;span class="na"&gt;nullableObjectWithAnyOfRefs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;anyOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="c1"&gt;# empty nullable object&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/SomeReferencedObject'&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/AnotherReferencedObject'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;code&gt;allOf&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Getting this to work with &lt;code&gt;allOf&lt;/code&gt; is a little bit more complicated. The problem is that &lt;code&gt;allOf&lt;/code&gt; requires &lt;em&gt;all&lt;/em&gt; of the specified schemas to have &lt;code&gt;nullable: true&lt;/code&gt; set, or the entire object will not be nullable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# this won't work&lt;/span&gt;
  &lt;span class="na"&gt;notActuallyNullableObjectWithAllOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
    &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;allOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;anotherId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;

  &lt;span class="c1"&gt;# neither will this, since the secont object is not nullable&lt;/span&gt;
  &lt;span class="na"&gt;notActuallyNullableObjectWithAllOfAndNullableOptions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;allOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;anotherId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The solution here is to either set &lt;code&gt;nullable: true&lt;/code&gt; on all of the specified schemas, or &lt;em&gt;nest the &lt;code&gt;allOf&lt;/code&gt; array inside of a &lt;code&gt;oneOf&lt;/code&gt; array, and set &lt;code&gt;nullable: true&lt;/code&gt; on the first object in the &lt;code&gt;oneOf&lt;/code&gt; array.&lt;/em&gt; This approach works just as well for inline schemas as it does for &lt;code&gt;$ref&lt;/code&gt; schemas inside the &lt;code&gt;anyOf&lt;/code&gt; array.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="c1"&gt;# this works since each `allOf` schema is nullable&lt;/span&gt;
  &lt;span class="na"&gt;nullableObjectWithAllOfAndNullableOptions&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;allOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
        &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;anotherId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;

  &lt;span class="c1"&gt;# this works great as well, without having to adjust the schemas&lt;/span&gt;
  &lt;span class="na"&gt;nullableObjectWithAllOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;anyOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;allOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
            &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
            &lt;span class="na"&gt;properties&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
              &lt;span class="na"&gt;anotherId&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
                &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;integer&lt;/span&gt;

  &lt;span class="c1"&gt;# the same approach works just as well with `$ref`&lt;/span&gt;
  &lt;span class="na"&gt;nullableObjectWithAllOfRefs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;anyOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;nullable&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="no"&gt;true&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;object&lt;/span&gt;
        &lt;span class="na"&gt;allOf&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/SomeReferencedObject'&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;$ref&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#/components/schemas/AnotherReferencedObject'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How did I figure this out?
&lt;/h2&gt;

&lt;p&gt;As I said before, Postman was letting me know the responses weren't matching the schema, but it wasn't telling me which part of the schema was wrong.&lt;/p&gt;

&lt;p&gt;After a couple days of struggling, I finally found &lt;a href="https://github.com/cdimascio/express-openapi-validator/"&gt;&lt;code&gt;express-openapi-validator&lt;/code&gt;&lt;/a&gt;. So I set up a quick Express server, and hooked it up to my OpenAPI spec. It gave me a much more detailed error message, and I was able to work out what was wrong and how to fix it.&lt;/p&gt;

&lt;p&gt;I figured it might be useful for others to have a little tester that they could run, so I published my test setup on GitHub: &lt;a href="https://github.com/danieltott/openapi-3.0-nullable-object-example"&gt;&lt;code&gt;openapi-3.0-nullable-object-example&lt;/code&gt;&lt;/a&gt;. It's a very simple Express server that uses &lt;code&gt;express-openapi-validator&lt;/code&gt; to validate the responses against the OpenAPI spec.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

</description>
      <category>openapi</category>
      <category>swagger</category>
      <category>postman</category>
    </item>
    <item>
      <title>A New Site and a New Home - danott.dev</title>
      <dc:creator>Dan Ott</dc:creator>
      <pubDate>Mon, 31 Jul 2023 00:00:00 +0000</pubDate>
      <link>https://dev.to/danieltott/a-new-site-and-a-new-home-danottdev-3bjf</link>
      <guid>https://dev.to/danieltott/a-new-site-and-a-new-home-danottdev-3bjf</guid>
      <description>&lt;p&gt;It's been &lt;a href="https://danott.dev/thoughts/new-site-design-2013-07-15"&gt;10 years since I've redesigned my site&lt;/a&gt;, so I thought it was about time for a new one.&lt;/p&gt;

&lt;p&gt;I'm also saying goodbye to &lt;a href="https://dtott.com"&gt;dtott.com&lt;/a&gt;, and hello to &lt;a href="https://danott.dev"&gt;danott.dev&lt;/a&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  danott.dev
&lt;/h2&gt;

&lt;p&gt;I've had the dtott.com domain for a really long time and it's served me well. But, I stopped referring to myself as "Daniel T Ott" in most scenarios a while ago, so it was always sort of hard to explain the "t" in "dtott."&lt;/p&gt;

&lt;p&gt;danott.dev is a lot easier to remember and to say out loud, and I'm also a big fan of the .dev TLD, so I'm happy to have a domain with that extension.&lt;/p&gt;

&lt;h2&gt;
  
  
  New Design
&lt;/h2&gt;

&lt;p&gt;I've been working on this new design for a while now, and I'm really happy with how it turned out.&lt;/p&gt;

&lt;h3&gt;
  
  
  Next.js, Typescript, Tailwind CSS, and MDX
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I based the design and initial structure off of &lt;a href="https://tailwindui.com/templates/spotlight"&gt;Tailwind UI Spotlight template&lt;/a&gt;, but obviously made some major changes to it.&lt;/p&gt;

&lt;p&gt;For one thing, Spotlight is built using Next.js's Page Router, but I very much wanted to use the App Router (&lt;a href="https://danott.dev/thoughts/nextjs-app-router-talk"&gt;naturally&lt;/a&gt;). Spotlight is also written in Javascript, and I'm much more comfortable in Typescript these days, so I rewrote the whole thing in Typescript.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;a href="https://github.com/danieltott/danott.dev/tree/main/src/content"&gt;content is stored in MDX&lt;/a&gt;, and &lt;a href="https://github.com/danieltott/danott.dev/blob/a625721a2b70911ab5e7d60f0e291ba74a52eb12/src/app/(site)/thoughts/%5Bslug%5D/page.tsx#L46-L52"&gt;imported in to Next.js pages&lt;/a&gt; via React Server Components. I was able to pretty easily import my old content to the new platform, so that was good.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Design Elements
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The design of the site is inspired by one of my all-time favorite children's books, &lt;a href="https://en.wikipedia.org/wiki/The_Monster_at_the_End_of_This_Book:_Starring_Lovable,_Furry_Old_Grover"&gt;The Monster at the End of the Book&lt;/a&gt;, written by Jon Stone and illustrated by Michael Smollin.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dWpOk4GM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/90hjj2jqpkzwprjuwdbt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dWpOk4GM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/90hjj2jqpkzwprjuwdbt.jpg" alt="Photo of a page featuring Grover yelling surrounded by stars" width="800" height="1067"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The title font is a font called &lt;a href="https://simplebits.shop/products/free-lunch"&gt;Free Lunch&lt;/a&gt; by &lt;a href="https://simplebits.shop/"&gt;Dan Cederholm of SimpleBits&lt;/a&gt;. Dan was kind enough to provide me with an early-release version - &lt;strong&gt;thank you Dan&lt;/strong&gt;!&lt;br&gt;
&lt;a href="https://simplebits.shop/products/free-lunch"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6l4pk7pn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i5el7oym81iyr2rt303m.png" alt="Font specimen of Free Lunch" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The stars are generated using &lt;a href="https://github.com/danieltott/danott.dev/blob/main/src/app/stars.svg/route.ts"&gt;&lt;code&gt;&amp;lt;svg&amp;gt;&lt;/code&gt; with random styles applied to them&lt;/a&gt;, positioned via &lt;a href="https://pomax.github.io/bezierjs/"&gt;Bezier JS&lt;/a&gt;. I went through several iterations of this - starting with outputting a ton of inline React SVGs (way too slow and too many DOM elements), then using &lt;code&gt;&amp;lt;canvas&amp;gt;&lt;/code&gt; by hand (wonky, hard, slow), then using &lt;code&gt;konva-react&lt;/code&gt; (nice, but sluggish and &lt;em&gt;huge&lt;/em&gt; bundle size), then finally using one single SVG route and including it via an &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; tag. I'm pretty happy with how it turned out.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Social Images are generated using &lt;a href="https://nextjs.org/docs/app/api-reference/file-conventions/metadata/opengraph-image#generate-images-using-code-js-ts-tsx"&gt;Next.js's &lt;code&gt;ImageResponse&lt;/code&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://danott.dev"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KIVihTK8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yyfj6qg0c9yj3z38a0t9.png" alt="Social image for the home page" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Thanks for reading, &lt;a href="https://danott.dev"&gt;check out the site&lt;/a&gt;, and let me know what you think!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>NextJS App Router Intro and Tour</title>
      <dc:creator>Dan Ott</dc:creator>
      <pubDate>Sat, 03 Jun 2023 20:00:00 +0000</pubDate>
      <link>https://dev.to/virtualcoffee/nextjs-app-router-intro-and-tour-477g</link>
      <guid>https://dev.to/virtualcoffee/nextjs-app-router-intro-and-tour-477g</guid>
      <description>&lt;p&gt;Next.js recently released their new App Router, which introduces an entirely new paradigm for creating Next.js apps. As part of &lt;a href="https://www.youtube.com/playlist?list=PLh9uT23TA65idCyc_orC85RefgY_-fKsG"&gt;Virtual Coffee's Lunch &amp;amp; Learn series&lt;/a&gt;, I gave a two-part presentation where we dove in to how the App Router works.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=faE-G7_bQqU"&gt;In Part 1&lt;/a&gt;, we cover some JS history, and then dive in to the new App Router. We also spent some time on React Server Components.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=ywaMkjvTWiY"&gt;In Part 2&lt;/a&gt;, we take a look at data fetching in the App Router, and ways Next.js can help optimize your app with little work on your end.&lt;/p&gt;

&lt;p&gt;You'll find some value here whether you're experienced with Next.js already or have never touched it - it's a great tool and the ways that it hooks in to both the React ecosystem and the Javascript/Typescript ecosystem as a whole offers a lot to learn.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=faE-G7_bQqU"&gt;Video for Part 1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=ywaMkjvTWiY"&gt;Video for Part 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I created a &lt;a href="https://github.com/danieltott/nextjs-app-router-example"&gt;companion GitHub repository&lt;/a&gt; that contains examples. The talk is broken up into sections - and each section has a corresponding Pull Request.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;main&lt;/code&gt; branch has the full thing, each Pull Request is based off of the other, starting with the Base Install.&lt;/p&gt;

&lt;p&gt;See the full running app &lt;a href="https://nextjs-app-router-example.vercel.app/"&gt;here on Vercel&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/docs"&gt;Next.js Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://app-router.vercel.app/"&gt;App Router Playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/docs/getting-started/react-essentials#server-components"&gt;Next.js on React Server Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.patterns.dev/posts/react-server-components"&gt;React Server Components on patterns.dev&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://news.ycombinator.com/item?id=25499171"&gt;Hacker News thread by Dan Abramov&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Talk Sections:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  0: Base install
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;(branch only, no PR)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We start with the output of &lt;code&gt;npx create-next-app@latest&lt;/code&gt;, with a couple small adjustments&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Update design&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;pnpm&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/danieltott/nextjs-app-router-example/pull/6"&gt;1: Intro, Routes and Layouts&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://nextjs-app-router-example-git-01-intro-routes-3bd35e-danieltott.vercel.app"&gt;Running App on Vercel&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add some basic &lt;a href="https://nextjs.org/docs/app/building-your-application/routing/defining-routes"&gt;routes&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add a &lt;a href="https://nextjs.org/docs/app/building-your-application/routing/pages-and-layouts#root-layout-required"&gt;Root Layout&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add some &lt;a href="https://nextjs.org/docs/app/building-your-application/routing/pages-and-layouts#nesting-layouts"&gt;nested layouts&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add some examples of &lt;a href="https://nextjs.org/docs/getting-started/react-essentials"&gt;Client Components&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/danieltott/nextjs-app-router-example/pull/7"&gt;2: Route Groups and Dynamic Routes&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://nextjs-app-router-example-git-02-groups-and-dynamic-danieltott.vercel.app"&gt;Running App on Vercel&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a &lt;a href="https://nextjs.org/docs/app/building-your-application/routing/route-groups"&gt;Route Group&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add a &lt;a href="https://nextjs.org/docs/app/building-your-application/routing/dynamic-routes"&gt;Dynamic Route&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add &lt;a href="https://nextjs.org/docs/app/building-your-application/optimizing/metadata#dynamic-metadata"&gt;Dynamic Metadata&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/danieltott/nextjs-app-router-example/pull/8"&gt;3: Handling Errors&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://nextjs-app-router-example-git-03-errors-danieltott.vercel.app"&gt;Running App on Vercel&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add &lt;a href="https://nextjs.org/docs/app/building-your-application/routing/error-handling"&gt;error handlers&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Add &lt;a href="https://nextjs.org/docs/app/api-reference/file-conventions/not-found"&gt;404 handlers&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/danieltott/nextjs-app-router-example/pull/9"&gt;4: Data Fetching&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://nextjs-app-router-example-git-04-data-fetching-danieltott.vercel.app"&gt;Running App on Vercel&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add &lt;a href="https://nextjs.org/docs/app/building-your-application/data-fetching/fetching"&gt;Data Fetching&lt;/a&gt; to Route&lt;/li&gt;
&lt;li&gt;Add &lt;a href="https://nextjs.org/docs/app/building-your-application/data-fetching/fetching"&gt;Data Fetching&lt;/a&gt; to Layout&lt;/li&gt;
&lt;li&gt;Add &lt;a href="https://nextjs.org/docs/app/building-your-application/routing/loading-ui-and-streaming"&gt;&lt;code&gt;loading.js&lt;/code&gt; files&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/danieltott/nextjs-app-router-example/pull/10"&gt;5: Suspense&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://nextjs-app-router-example-git-05-suspense-danieltott.vercel.app"&gt;Running App on Vercel&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add &lt;a href="https://nextjs.org/docs/app/building-your-application/routing/loading-ui-and-streaming#streaming-with-suspense"&gt;&lt;code&gt;Suspense&lt;/code&gt;&lt;/a&gt; example&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/danieltott/nextjs-app-router-example/pull/11"&gt;6: Rendering and Caching&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://nextjs-app-router-example-git-06-caching-danieltott.vercel.app"&gt;Running App on Vercel&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data &lt;code&gt;fetch&lt;/code&gt; on &lt;a href="https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic-rendering#static-rendering-default"&gt;static route&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Data &lt;code&gt;fetch&lt;/code&gt; on &lt;a href="https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic-rendering#dynamic-rendering"&gt;dynamic route&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;fetch&lt;/code&gt; with &lt;a href="https://nextjs.org/docs/app/building-your-application/data-fetching/caching"&gt;&lt;code&gt;cache: no-store&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;fetch&lt;/code&gt; with &lt;a href="https://nextjs.org/docs/app/building-your-application/data-fetching/revalidating"&gt;&lt;code&gt;revalidate: 0&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;fetch&lt;/code&gt; with &lt;a href="https://nextjs.org/docs/app/building-your-application/data-fetching/revalidating"&gt;&lt;code&gt;revalidate: 5&lt;/code&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;fetch&lt;/code&gt; with a Static page + &lt;a href="https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config#revalidate"&gt;&lt;code&gt;revalidate = true&lt;/code&gt; Route Segment Config&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>nextjs</category>
      <category>react</category>
      <category>videos</category>
    </item>
    <item>
      <title>Virtual Coffee Hacktoberfest 2022 Roundup</title>
      <dc:creator>Dan Ott</dc:creator>
      <pubDate>Thu, 03 Nov 2022 02:08:00 +0000</pubDate>
      <link>https://dev.to/virtualcoffee/virtual-coffee-hacktoberfest-2022-roundup-1c2k</link>
      <guid>https://dev.to/virtualcoffee/virtual-coffee-hacktoberfest-2022-roundup-1c2k</guid>
      <description>&lt;p&gt;Another Hacktoberfest has come and gone! &lt;/p&gt;

&lt;p&gt;This was Virtual Coffee's third Hacktoberfest (🤯) and it was another great one! Our members knocked it out of the park as usual, and we wanted to take a moment to celebrate!&lt;/p&gt;

&lt;p&gt;Our Virtual Coffee Hacktoberfest Initiative (VCHI) is an annual event where our members come together to help each other contribute to Open Source and hopefully complete &lt;a href="https://hacktoberfest.com"&gt;Digital Ocean's Hacktoberfest Challenge&lt;/a&gt;. Some of our members are maintainers of their own repos, some sign up as mentors for members who are new to open source, and some sign up just to get Hacktoberfesting &lt;small&gt;(or Hacktoberfestering if you're Dan)&lt;/small&gt;!&lt;/p&gt;




&lt;p&gt;This year we had an awesome team of volunteers helping the maintainers out running things - so a very special &lt;strong&gt;✨ thank you ✨&lt;/strong&gt; to Dominic Duffin, Enrico La Cava, Joe Karow, Lucia Cerchie, Nick Taylor. And one more HUGE shoutout to Drew Clements who designed our very first Virtual Coffee Hacktoberfest image--used as the cover image here.&lt;/p&gt;




&lt;p&gt;We kicked off the month with &lt;a href="https://www.youtube.com/playlist?list=PLh9uT23TA65hH8sfprU1XOvT4NBesokna"&gt;three great Hacktoberfest/Open Source videos&lt;/a&gt; and a podcast episode with our maintainers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=4Pt-14e08xE&amp;amp;list=PLh9uT23TA65hH8sfprU1XOvT4NBesokna&amp;amp;index=3"&gt;Hacktoberfest Initiative Kickoff &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=QAUodCQnpkQ&amp;amp;list=PLh9uT23TA65hH8sfprU1XOvT4NBesokna&amp;amp;index=3"&gt;Intro to Hacktoberfest: PRs, Issues, Evaluating repos&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=A8iI2jlsqfs&amp;amp;list=PLh9uT23TA65hH8sfprU1XOvT4NBesokna&amp;amp;index=2"&gt;Hacktoberfest &amp;amp; Open Sauced&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://virtualcoffee.io/podcast/season-six-finale-talking-hacktoberfest-with-bekah-dan-and-kirk"&gt;Talking Hacktoberfest with Bekah, Dan, and Kirk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We had 56 members sign up as contributors, repository maintainers, and mentors. Here are some cool stats and shoutouts from VCHI 2022:&lt;/p&gt;




&lt;h2&gt;
  
  
  Mentors:
&lt;/h2&gt;

&lt;p&gt;Our mentors are one of the biggest parts of what we do at VC for Hacktoberfest. They each have one or more mentees and spend the month helping people start their open source journey. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✨ Thank you ✨&lt;/strong&gt; to our amazing mentors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adam Abundis&lt;/li&gt;
&lt;li&gt;Alex Curtis-Slep&lt;/li&gt;
&lt;li&gt;Amy Shackles&lt;/li&gt;
&lt;li&gt;BekahHW&lt;/li&gt;
&lt;li&gt;Brian Meeker&lt;/li&gt;
&lt;li&gt;Dan Ott&lt;/li&gt;
&lt;li&gt;David Alpert&lt;/li&gt;
&lt;li&gt;Joern Bernhardt&lt;/li&gt;
&lt;li&gt;Kirk Shillingford&lt;/li&gt;
&lt;li&gt;Meg Gutshall&lt;/li&gt;
&lt;li&gt;Nick Taylor&lt;/li&gt;
&lt;li&gt;Raynald Mirville&lt;/li&gt;
&lt;li&gt;Skyler Murray&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Maintainers:
&lt;/h2&gt;

&lt;p&gt;Some of our members signed up as open source maintainers - these members (and all of the Hacktoberfest maintainers) spend a lot of time on their projects behind the scenes, preparing their repositories and helping contributors be successful. For the 8 repos our participating members are maintaining, they merged &lt;strong&gt;642 pull requests&lt;/strong&gt; from &lt;strong&gt;262 unique contributors&lt;/strong&gt; 🤯🤯🤯.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✨ Thank you ✨&lt;/strong&gt; to our awesome maintainers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;h3&gt;&lt;a href="https://github.com/BekahHW"&gt;BekahHW&lt;/a&gt;&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://BekahHW/postpartum-wellness-app"&gt;BekahHW/postpartum-wellness-app&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext"&gt;deepgram-devs/dg-translation-chrome-ext&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;h3&gt;&lt;a href="https://github.com/ClJarvis"&gt;Chris Jarvis&lt;/a&gt;&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ClJarvis/Hello_There"&gt;ClJarvis/Hello_There&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;h3&gt;&lt;a href="https://github.com/danieltott"&gt;Dan Ott&lt;/a&gt;&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;h3&gt;&lt;a href="https://github.com/JesseRWeigel"&gt;Jesse R Weigel&lt;/a&gt;&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://JesseRWeigel/battlemath"&gt;JesseRWeigel/battlemath&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://JesseRWeigel/voice-to-text-notes"&gt;JesseRWeigel/voice-to-text-notes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;/li&gt;

&lt;li&gt;

&lt;h3&gt;
&lt;a href="https://github.com/jdwilkin4"&gt;Jessica Wilkins &lt;/a&gt; &lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://freeCodeCamp/Developer_Quiz_Site"&gt;freeCodeCamp/Developer_Quiz_Site&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;h3&gt;&lt;a href="https://github.com/tkshill"&gt;Kirk Shillingford&lt;/a&gt;&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;h3&gt;&lt;a href="https://github.com/nickytonline"&gt;Nick Taylor&lt;/a&gt;&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nickytonline/connect-four"&gt;nickytonline/connect-four&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;


&lt;h2&gt;
  
  
  VirtualCoffee.io:
&lt;/h2&gt;

&lt;p&gt;Every year for Hacktoberfest, we prepare a special issue that members can contribute to to get them started towards Hacktoberfest. We also try to create a number of other issues like new features, bug fixes, and general improvements throughout the month.&lt;/p&gt;

&lt;p&gt;On the &lt;a href="https://github.com/VirtualCoffee.io"&gt;VirtualCoffee.io repo&lt;/a&gt; in the month of October: &lt;strong&gt;32 members&lt;/strong&gt; made 65 pull requests: &lt;strong&gt;34&lt;/strong&gt; of which were member profile additions/updates, while &lt;strong&gt;31&lt;/strong&gt; were new features or other improvements to the site.&lt;/p&gt;

&lt;p&gt;Amazing!&lt;/p&gt;


&lt;h2&gt;
  
  
  Contributions:
&lt;/h2&gt;

&lt;p&gt;Of the 52 members that signed up, &lt;strong&gt;36 members had at least one accepted pull request in a repository participating in Hacktoberfest&lt;/strong&gt;, and we collectively created &lt;strong&gt;132 pull requests&lt;/strong&gt; across &lt;strong&gt;31 repositories&lt;/strong&gt; in the month of October.&lt;/p&gt;

&lt;p&gt;This is incredible. We are so proud of everyone who contributed, whether this is their first time in open source or they've been keeping all their squares green for years.&lt;/p&gt;



&lt;p&gt;We were able to tally up everyone's contributions - here are all of the Hacktoberfest pull requests that our members made this month:&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;a href="https://github.com/aishwarya-mali"&gt;aishwarya-mali&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;10&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;31&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;646&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;191&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;7&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/731"&gt;convert DefaultLayout to tsx&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/698"&gt;Convert getChallenges.js to TypeScript&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/677"&gt;add aishwarya-mali member profile and hacktoberfest badge&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/thecyberworld/thecyberhub.org"&gt;thecyberworld/thecyberhub.org&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/thecyberworld/thecyberhub.org/pull/198"&gt;Infinite scroll news&lt;/a&gt; - 5 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/BekahHW/postpartum-wellness-app"&gt;BekahHW/postpartum-wellness-app&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/BekahHW/postpartum-wellness-app/pull/101"&gt;Update Resources by Categories&lt;/a&gt; - 5 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/BekahHW/postpartum-wellness-app/pull/99"&gt;added MindfulnessScreen and necessary navigations&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext"&gt;deepgram-devs/dg-translation-chrome-ext&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext/pull/13"&gt;add toggle for API Key&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site"&gt;freeCodeCamp/Developer_Quiz_Site&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/246"&gt;add question for sets&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/dsasaank-369/Pokemon"&gt;dsasaank-369/Pokemon&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/dsasaank-369/Pokemon/pull/144"&gt;Added Wigglytuff pokemon &lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/ankitpareek0141/Favorite-OTT-characters"&gt;ankitpareek0141/Favorite-OTT-characters&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/ankitpareek0141/Favorite-OTT-characters/pull/45"&gt;[FOTTC] added information of Niklaus Mikaelson&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/adiati98"&gt;adiati98&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;9&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;12&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;6547&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;4033&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/728"&gt;Convert &lt;code&gt;newsletters.js&lt;/code&gt; to TypeScript&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/708"&gt;Fix links on Table of Content in CONTRIBUTING.md&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/702"&gt;Update CONTRIBUTING and README files&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/668"&gt;Add Code of Conduct link to the footer&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/658"&gt;Add Hacktoberfest 2022 badge to profile&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/657"&gt;Add October 2022 newsletter to website&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/mgreiler/se-unlocked"&gt;mgreiler/se-unlocked&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/mgreiler/se-unlocked/pull/156"&gt;Improve transcript 65 Harshit Chitalia&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/podcast-transcripts"&gt;Virtual-Coffee/podcast-transcripts&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/podcast-transcripts/pull/81"&gt;Update Podcast Docs&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/podcast-transcripts/pull/79"&gt;Improve episode transcription Season 5 Special Kirk Day (5_999.srt)&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/danieltott"&gt;danieltott&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;7&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;151&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;1862&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;184&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/nickytonline/connect-four"&gt;nickytonline/connect-four&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nickytonline/connect-four/pull/85"&gt;Interactive element for columns&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/716"&gt;Bug/use location&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/704"&gt;Fix challenge bug&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/679"&gt;Feature/easy ts fixes&lt;/a&gt; - 8 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/651"&gt;Feature/update node&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/646"&gt;Created my member profile&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/642"&gt;Feature/autoload members&lt;/a&gt; - 133 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/ClJarvis"&gt;ClJarvis&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;6&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;7&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;3092&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;2862&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/codethesaurus/docs"&gt;codethesaurus/docs&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/codethesaurus/docs/pull/37"&gt;Best practices&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/thisdot/tech-conferences"&gt;thisdot/tech-conferences&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/thisdot/tech-conferences/pull/34"&gt;added magnolia JS&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/podcast-transcripts"&gt;Virtual-Coffee/podcast-transcripts&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/podcast-transcripts/pull/82"&gt;Season2epi9&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/podcast-transcripts/pull/78"&gt;update transcript for 4_2&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/do-community/cloud_haiku"&gt;do-community/cloud_haiku&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/do-community/cloud_haiku/pull/2233"&gt;wrote a hiaku in markdown&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/648"&gt;I added my badge and flare to profile.&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/davidalpert"&gt;davidalpert&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;6&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;15&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;576&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;238&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/davidalpert/go-git-mob"&gt;davidalpert/go-git-mob&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/davidalpert/go-git-mob/pull/94"&gt;test: fix feature specs to align with #89&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/davidalpert/go-git-mob/pull/92"&gt;test: example bug feature&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/davidalpert/go-git-mob/pull/91"&gt;build: add default fail-on-error&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/deepgram-devs/deepgram-go-sdk"&gt;deepgram-devs/deepgram-go-sdk&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/deepgram-devs/deepgram-go-sdk/pull/13"&gt;refactor: apply formatting&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/deepgram-devs/deepgram-go-sdk/pull/9"&gt;fix: syntax error (missing bracket)&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/withfig/autocomplete"&gt;withfig/autocomplete&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/withfig/autocomplete/pull/1582"&gt;feat(csdx): add generator&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/BekahHW"&gt;BekahHW&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;6&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;13&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;3587&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;3538&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext"&gt;deepgram-devs/dg-translation-chrome-ext&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext/pull/17"&gt;change file to yml&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext/pull/16"&gt;Update bug report to form&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext/pull/14"&gt;Add options page&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext/pull/11"&gt;Add types for chrome and update with some types&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/697"&gt;Feature/convert postlist tsx&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/647"&gt;Update profile with Hacktoberfest badge&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/sadiejay"&gt;sadiejay&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;8&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;218&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;23&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/730"&gt;Converted &lt;code&gt;PodcastSubscribe&lt;/code&gt; file to tsx&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/721"&gt;Convert ts undrawillustration&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/710"&gt;Update member profile for sadiejay&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/IBM/carbon-ui-builder"&gt;IBM/carbon-ui-builder&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/IBM/carbon-ui-builder/pull/177"&gt;Adds PR template feature&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/IBM/carbon-ui-builder/pull/176"&gt;Adds issue forms&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/carmenkolohe"&gt;carmenkolohe&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;6&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;120&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;23&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/720"&gt;change to ts file, add url validation&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/719"&gt;replace coc text link and enforcement headline&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/713"&gt;add hacktoberfest badge&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/nickytonline/connect-four"&gt;nickytonline/connect-four&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nickytonline/connect-four/pull/59"&gt;move contributing section in readme&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site"&gt;freeCodeCamp/Developer_Quiz_Site&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/432"&gt;add 3 more questions to accessibility quiz&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/JesseRWeigel"&gt;JesseRWeigel&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;26&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;193&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;87&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/JesseRWeigel/battlemath"&gt;JesseRWeigel/battlemath&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/JesseRWeigel/battlemath/pull/94"&gt;refactor: delete unused files and restore deleted code&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/JesseRWeigel/battlemath/pull/85"&gt;Update issue templates&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/669"&gt;docs: fix typos in contributing.md&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/666"&gt;refactor(memberCard): convert memberCard and icons to ts. closes #660&lt;/a&gt; - 17 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/659"&gt;add hacktoberfest2022 badge&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/annakimdev"&gt;annakimdev&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;7&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;152&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;13&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Spyware007/Animating-Buttons"&gt;Spyware007/Animating-Buttons&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Spyware007/Animating-Buttons/pull/158"&gt;add animated logout button per Issue #141&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/davejane25/Calculators"&gt;davejane25/Calculators&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/davejane25/Calculators/pull/32"&gt;fix Caesercipher Calculator Issue #31&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/701"&gt;add annakimdev as a member per Issue #13 and Hacktoberfest2022 badge #643&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/ClJarvis/Hello_There"&gt;ClJarvis/Hello_There&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/ClJarvis/Hello_There/pull/12"&gt;Closes #11&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/muckitymuck"&gt;muckitymuck&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;56&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;9&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/nickytonline/connect-four"&gt;nickytonline/connect-four&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nickytonline/connect-four/pull/71"&gt;Duplicate README.md line&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/nickytonline/connect-four/pull/63"&gt;Remove coins&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/nickytonline/connect-four/pull/48"&gt;prettier fix for files from lint run&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/664"&gt;personal info Andrew Goldstein (muckitymuck.ts)&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/YolandaHaynes"&gt;YolandaHaynes&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;29&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;38911&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;7875&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/nickytonline/connect-four"&gt;nickytonline/connect-four&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nickytonline/connect-four/pull/72"&gt;feat: added storybook&lt;/a&gt; - 25 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/734"&gt;convert app/root from jsx to tsx&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/733"&gt;Adding lazy loading to members page&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/732"&gt;updated profile for hacktoberfest2022&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/pedaars"&gt;pedaars&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;6&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;9&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;51&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/nickytonline/connect-four"&gt;nickytonline/connect-four&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nickytonline/connect-four/pull/26"&gt;removed the counter component from the project&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/ClJarvis/Hello_There"&gt;ClJarvis/Hello_There&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/ClJarvis/Hello_There/pull/5"&gt;Hello there.php&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/663"&gt;Bug/#654&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/662"&gt;Updated pedaars.ts to add additional info and hacktoberfest 2022 badge&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/raykotab"&gt;raykotab&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;35&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;6&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/nickytonline/connect-four"&gt;nickytonline/connect-four&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nickytonline/connect-four/pull/74"&gt;unused import deleted&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/649"&gt;hacktoberfest badge and flare added&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site"&gt;freeCodeCamp/Developer_Quiz_Site&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/175"&gt;Two new questions about sql injection security.alvaro tab&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/freeCodeCamp/Developer_Quiz_Site/pull/151"&gt;new question about now() function for SQL quiz&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/meg-gutshall"&gt;meg-gutshall&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;8&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;185&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;145&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/thisdot/tech-conferences"&gt;thisdot/tech-conferences&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/thisdot/tech-conferences/pull/47"&gt;Add Jamstack conferences&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/thisdot/tech-conferences/pull/46"&gt;Reformat repo&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext"&gt;deepgram-devs/dg-translation-chrome-ext&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext/pull/23"&gt;Add punctuation feature&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/695"&gt;Add Hacktoberfest 2022 badge&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/JoeKarow"&gt;JoeKarow&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;8&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;5263&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;199&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/736"&gt;generate all asset aspect ratios on build&lt;/a&gt; - 5 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/735"&gt;convert &lt;code&gt;http.js&lt;/code&gt; to typescript&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/t3-oss/create-t3-app"&gt;t3-oss/create-t3-app&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/t3-oss/create-t3-app/pull/668"&gt;docs: correct link to 'tsx' repo&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/connor-baer/action-sync-branch"&gt;connor-baer/action-sync-branch&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/connor-baer/action-sync-branch/pull/90"&gt;Update runner to node16&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/lsparlin"&gt;lsparlin&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;7&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;74&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;32&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/725"&gt;Typescript conversion: app/component/HomePageBlock&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/724"&gt;Typescript conversion: app/component/FileIndex&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/723"&gt;Typescript conversion: app/util/socialimage&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/722"&gt;lsparlin add Hacktoberfest2022 badge&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/Nerajno"&gt;Nerajno&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;149&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;145&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/thisdot/tech-conferences"&gt;thisdot/tech-conferences&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/thisdot/tech-conferences/pull/43"&gt;Added KCDC, Ran it through Grammarly&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/thisdot/tech-newsletters"&gt;thisdot/tech-newsletters&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/thisdot/tech-newsletters/pull/41"&gt; Added guidance counselor 2.0 newsletter and  ran it through Grammarly&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/thisdot/tech-dev-tooling"&gt;thisdot/tech-dev-tooling&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/thisdot/tech-dev-tooling/pull/48"&gt;Added Sentry to the list and fixed grammatical errors&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/thisdot/diverse-speakers"&gt;thisdot/diverse-speakers&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/thisdot/diverse-speakers/pull/6"&gt;Alphabetized Names &amp;amp; Added mine&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/abuna1985"&gt;abuna1985&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;5&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;210&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;138&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext"&gt;deepgram-devs/dg-translation-chrome-ext&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext/pull/22"&gt;Add a Feature Request Form&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/crescentpartha/CheatSheets-for-Developers"&gt;crescentpartha/CheatSheets-for-Developers&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/crescentpartha/CheatSheets-for-Developers/pull/213"&gt;Update the format for the Chrome devtools keyboard shortcut cheatsheet&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/crescentpartha/CheatSheets-for-Developers/pull/154"&gt;Added keyboard shortcuts for Chrome DevTools CheatSheet (Mac &amp;amp; Windows/Linux)&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/727"&gt;Added flare, social links, and Hacktoberfest badge to member Adam Abundis&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/nickytonline"&gt;nickytonline&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;3293&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;1925&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;541269&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext"&gt;deepgram-devs/dg-translation-chrome-ext&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext/pull/7"&gt;chore: removed node_modules from git&lt;/a&gt; - 3263 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/nickytonline/connect-four"&gt;nickytonline/connect-four&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nickytonline/connect-four/pull/29"&gt;chore: Loosened Node 16 version for node engine&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/nickytonline/connect-four/pull/20"&gt;feat: moved to SvelteKit&lt;/a&gt; - 28 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/672"&gt;chore: added my Hacktoberfest 2022 to my profile&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/jdwilkin4"&gt;jdwilkin4&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;8&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;43&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;15&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/709"&gt;chore: updating github action for prettier formatting&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/676"&gt;updating jdwilkin4 member profile and adding hacktoberfest badge&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/nickytonline/connect-four"&gt;nickytonline/connect-four&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nickytonline/connect-four/pull/43"&gt;docs: adding a section in the README for codesandbox development &lt;/a&gt; - 6 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/klezi10"&gt;klezi10&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;9&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;114&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;101&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/webdev-20/shorti-url-shortener"&gt;webdev-20/shorti-url-shortener&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/webdev-20/shorti-url-shortener/pull/29"&gt;Added component to enter URL&lt;/a&gt; - 5 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/webdev-20/shorti-url-shortener/pull/26"&gt;Added myself as a contributor to the project&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/webdev-20/shorti-url-shortener/pull/24"&gt;added footer skeleton&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/dominicduffin1"&gt;dominicduffin1&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;6&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;129&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;10&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/BekahHW/postpartum-wellness-app"&gt;BekahHW/postpartum-wellness-app&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/BekahHW/postpartum-wellness-app/pull/102"&gt;Add Profile Screen&lt;/a&gt; - 5 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/706"&gt;Update member profile for Dominic Duffin&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/chaos986"&gt;chaos986&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;77&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;8&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/685"&gt;Added new page for Developer Health resources.  Starting with "Burnout"&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/675"&gt;edited member profile&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/rmirville"&gt;rmirville&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;94&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;6&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext"&gt;deepgram-devs/dg-translation-chrome-ext&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/deepgram-devs/dg-translation-chrome-ext/pull/9"&gt;Add font size, spacing styles to popup&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/661"&gt;feat: Add Raynald to members&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/DavidRod1865"&gt;DavidRod1865&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;48&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/674"&gt;Added David Rodriguez to Member Page and Added Hacktoberfest Flare&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/AccessibleForAll/AccessibleWebDev"&gt;AccessibleForAll/AccessibleWebDev&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/AccessibleForAll/AccessibleWebDev/pull/124"&gt;Import wip to links template&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/radturkin"&gt;radturkin&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;47&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/717"&gt;rad gets a badge&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/714"&gt;Add Rad to members&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/Narigo"&gt;Narigo&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;6&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;143&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/656"&gt;Add myself to members page&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/nickytonline/connect-four"&gt;nickytonline/connect-four&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nickytonline/connect-four/pull/18"&gt;Add onclick handler to update game state&lt;/a&gt; - 4 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/LincolnFleet"&gt;LincolnFleet&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;4&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/665"&gt;Add badge and data for LincolnFleet [Travis Martin]&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/CodingatTiffanys"&gt;CodingatTiffanys&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;46&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/671"&gt;add tiffany pena to members&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/jocrah"&gt;jocrah&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;23&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/nickytonline/connect-four"&gt;nickytonline/connect-four&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nickytonline/connect-four/pull/31"&gt;feat: add Coin component&lt;/a&gt; - 2 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/AlexVCS"&gt;AlexVCS&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/667"&gt;added the Hacktoberfest 2022 badge :)&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/ridonky"&gt;ridonky&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;46&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;0&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io"&gt;Virtual-Coffee/virtualcoffee.io&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/Virtual-Coffee/virtualcoffee.io/pull/650"&gt;added member page for lauren perini&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/teezzan"&gt;teezzan&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;3&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;126&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;83&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/davidalpert/go-git-mob"&gt;davidalpert/go-git-mob&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/davidalpert/go-git-mob/pull/89"&gt;Fix: co-authors not cleared from message template (&lt;code&gt;.gitmessage&lt;/code&gt;) on switch from mob to solo&lt;/a&gt; - 3 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/CodeKage25"&gt;CodeKage25&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;11&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/nickytonline/connect-four"&gt;nickytonline/connect-four&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/nickytonline/connect-four/pull/61"&gt;Added a documentation referencing to Wikipedia  about the connect game&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://github.com/SteviBee"&gt;SteviBee&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Total pull requests: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total changed files: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total additions: &lt;strong&gt;68&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Total deletions: &lt;strong&gt;68&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Unique repos: &lt;strong&gt;1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/jcubic/lips"&gt;jcubic/lips&lt;/a&gt;&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/jcubic/lips/pull/222"&gt;Fixed Grammar and Suggested Comments&lt;/a&gt; - 1 files changed&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Post Event Reminders to Slack Using Netlify Functions</title>
      <dc:creator>Dan Ott</dc:creator>
      <pubDate>Tue, 12 Apr 2022 19:13:44 +0000</pubDate>
      <link>https://dev.to/virtualcoffee/post-event-reminders-to-slack-using-netlify-functions-3ie0</link>
      <guid>https://dev.to/virtualcoffee/post-event-reminders-to-slack-using-netlify-functions-3ie0</guid>
      <description>&lt;p&gt;At Virtual Coffee, we have events almost every day, and we hang out in Slack every day! So, it was inevitable that we'd get some sort of event reminders going in Slack. Our first pass was by the late Mike Rogers (we miss you, Mike ❤️). Our events were listed on MeetingPlace.io, so Mike wrote a Ruby app to pull date down from MeetingPlace and post to Slack: &lt;a href="https://github.com/Virtual-Coffee/bot-meetingplace-events"&gt;Meetingplace Events Bot&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;When we moved from Meetingplace to our own CMS, I took the chance to do some upgrades, and convert to Javascript, at the same time. Follow along and we can get some event reminders going for you!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gNIJPHjb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s30no7y4gcgqqh43r6wp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gNIJPHjb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s30no7y4gcgqqh43r6wp.png" alt="Slack event reminders screenshot" width="740" height="663"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Here's what you need:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A data source that can give you events in a specified range. We have a custom CMS now that stores this data, but this can also be from Meetingplace, Meetup.com, or anywhere else.&lt;/li&gt;
&lt;li&gt;A Slack App you've created and added to your Slack&lt;/li&gt;
&lt;li&gt;A place to execute some Code - we're using Netlify functions&lt;/li&gt;
&lt;li&gt;Something that can execute Cron Jobs - we're using &lt;a href="https://cron-job.org"&gt;cron-job.org&lt;/a&gt;. If you're going to do hourly reminders, I'd advise you &lt;em&gt;not&lt;/em&gt; to use GitHub Actions. You can't count on them to run close enough to the time the events start.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Creating your function on Netlify
&lt;/h2&gt;

&lt;p&gt;A Netlify function is a Javascript file that lives at a url. It can receive GET or POST parameters, and can serve a response.&lt;/p&gt;

&lt;p&gt;Our function is going to be called by our cron job (more on this in a bit), and will send a message to Slack.&lt;/p&gt;

&lt;p&gt;When the function is called, here's the basic outline of what will happen:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cron job sends a &lt;code&gt;GET&lt;/code&gt; request to our function's url, with a &lt;code&gt;GET&lt;/code&gt; parameter of &lt;code&gt;type=weekly&lt;/code&gt;, &lt;code&gt;type=daily&lt;/code&gt;, or &lt;code&gt;type=hourly&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;The function will fetch events from our events data source with the appropriate parameters&lt;/li&gt;
&lt;li&gt;The function will parse the events as needed&lt;/li&gt;
&lt;li&gt;Next it'll create some blocks using the block templates above&lt;/li&gt;
&lt;li&gt;Finally the function will send a message to Slack using the &lt;a href="https://slack.dev/node-slack-sdk/web-api"&gt;Slack Web API Client&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Since every event API is going to look a little different, I'm not going to dig super deep into steps 2 and 3.&lt;/p&gt;

&lt;h2&gt;
  
  
  A GitHub Template for You!
&lt;/h2&gt;

&lt;p&gt;I created a basic GitHub template that you can use that follows the same ideas: &lt;a href="https://github.com/Virtual-Coffee/slack-event-reminders-template"&gt;&lt;code&gt;slack-event-reminders-template&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After you follow the instructions there, you'll have a working Netlify Function + Slack App that does everything we need!&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus: Designing your Slack message
&lt;/h2&gt;

&lt;p&gt;You can post Slack messages in plain text, but I've found it pretty nice and straightforward to use Slack's &lt;a href="https://app.slack.com/block-kit-builder"&gt;Block Kit Builder&lt;/a&gt; to design messages like in the screenshot above.&lt;/p&gt;

&lt;p&gt;Here's the blocks for our weekly message (&lt;a href="https://app.slack.com/block-kit-builder/T014AAKN3KP#%7B%22blocks%22:%5B%7B%22type%22:%22header%22,%22text%22:%7B%22type%22:%22plain_text%22,%22text%22:%22%F0%9F%93%86%20This%20Week's%20Events%20Are:%22,%22emoji%22:true%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22*%3C!date%5E1649768400%5E%7Bdate_long_pretty%7D%20%7Btime%7D%7CTuesday,%20April%2012,%202022,%209:00%20AM%20EDT%3E*%5CnVirtual%20Coffee%20-%20Morning%20Crowd%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22*%3C!date%5E1649952000%5E%7Bdate_long_pretty%7D%20%7Btime%7D%7CThursday,%20April%2014,%202022,%2012:00%20PM%20EDT%3E*%5CnVirtual%20Coffee%20-%20Afternoon%20Crowd%22%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22*%3C!date%5E1650373200%5E%7Bdate_long_pretty%7D%20%7Btime%7D%7CTuesday,%20April%2019,%202022,%209:00%20AM%20EDT%3E*%5CnVirtual%20Coffee%20-%20Morning%20Crowd%22%7D%7D,%7B%22type%22:%22context%22,%22elements%22:%5B%7B%22type%22:%22mrkdwn%22,%22text%22:%22See%20details%20and%20more%20events%20at%20%3Chttps://virtualcoffee.io/events%7CVirtualCoffee.IO%3E!%22%7D%5D%7D%5D%7D"&gt;open in builder&lt;/a&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"blocks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"header"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"plain_text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"📆 This Week's Events Are:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"emoji"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"section"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mrkdwn"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"*&amp;lt;!date^1649768400^{date_long_pretty} {time}|Tuesday, April 12, 2022, 9:00 AM EDT&amp;gt;*&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;Virtual Coffee - Morning Crowd"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"section"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mrkdwn"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"*&amp;lt;!date^1649952000^{date_long_pretty} {time}|Thursday, April 14, 2022, 12:00 PM EDT&amp;gt;*&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;Virtual Coffee - Afternoon Crowd"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"section"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mrkdwn"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"*&amp;lt;!date^1650373200^{date_long_pretty} {time}|Tuesday, April 19, 2022, 9:00 AM EDT&amp;gt;*&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;Virtual Coffee - Morning Crowd"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"context"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"elements"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mrkdwn"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"See details and more events at &amp;lt;https://virtualcoffee.io/events|VirtualCoffee.IO&amp;gt;!"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's an example of our hourly message (&lt;a href="https://app.slack.com/block-kit-builder/T014AAKN3KP#%7B%22blocks%22:%5B%7B%22type%22:%22header%22,%22text%22:%7B%22type%22:%22plain_text%22,%22text%22:%22%E2%8F%B0%20Starting%20Soon:%22,%22emoji%22:true%7D%7D,%7B%22type%22:%22section%22,%22text%22:%7B%22type%22:%22mrkdwn%22,%22text%22:%22*Test%20Event*%5Cn%3C!date%5E1649790000%5E%7Bdate_long_pretty%7D%20%7Btime%7D%7CTuesday,%20April%2012,%202022,%203:00%20PM%20EDT%3E%22%7D,%22accessory%22:%7B%22type%22:%22button%22,%22text%22:%7B%22type%22:%22plain_text%22,%22text%22:%22Join%20Event%22,%22emoji%22:true%7D,%22value%22:%22join_event_173%22,%22url%22:%22https://virtualcoffee.io%22,%22action_id%22:%22button-join-event%22%7D%7D,%7B%22type%22:%22context%22,%22elements%22:%5B%7B%22type%22:%22mrkdwn%22,%22text%22:%22An%20hour-long%20chat%20with%20devs%20at%20all%20stages%20of%20the%20journey.%20You%20can%20come%20to%20hang%20out%20with%20great%20people,%20ask%20questions%20or%20bring%20up%20a%20topic,%20or%20just%20sit%20back%20and%20listen%20to%20others%20talk%20about%20tech.%20Currently%20open%20to%20slack%20members%20only.%20Check%20announcements%20for%20the%20Join%20Event%20button.Every%20Tuesday%20at%209AM%20ET!%22%7D%5D%7D,%7B%22type%22:%22divider%22%7D%5D%7D"&gt;open in builder&lt;/a&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"blocks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"header"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"plain_text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"⏰ Starting Soon:"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"emoji"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"section"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mrkdwn"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"*Test Event*&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;!date^1649790000^{date_long_pretty} {time}|Tuesday, April 12, 2022, 3:00 PM EDT&amp;gt;"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"accessory"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"button"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"plain_text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Join Event"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"emoji"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"join_event_173"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://virtualcoffee.io"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"action_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"button-join-event"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"context"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"elements"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mrkdwn"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"An hour-long chat with devs at all stages of the journey. You can come to hang out with great people, ask questions or bring up a topic, or just sit back and listen to others talk about tech. Currently open to slack members only. Check announcements for the Join Event button.Every Tuesday at 9AM ET!"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"divider"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  A couple cool things to note here:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;a href="https://api.slack.com/reference/surfaces/formatting#date-formatting"&gt;&lt;code&gt;&amp;lt;!date&amp;gt;&lt;/code&gt; command&lt;/a&gt; formats dates in the user's local time zone. So if you have a date that starts at 12pm EST, you can use the &lt;code&gt;&amp;lt;!date&amp;gt;&lt;/code&gt; command and it will output as 9am for a user in California!&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://api.slack.com/reference/block-kit/block-elements#button"&gt;&lt;code&gt;button&lt;/code&gt; accessory&lt;/a&gt; gives us a nice-looking button for opening links. You can even add a confirmation dialog or do some other actions with these if you want!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  That's it!
&lt;/h2&gt;

&lt;p&gt;Please feel free to let me know if there are any questions, or file an issue on the GitHub template if you see somewhere we can improve!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>slack</category>
      <category>netlify</category>
    </item>
    <item>
      <title>How the Virtual Coffee Coworking Room Works</title>
      <dc:creator>Dan Ott</dc:creator>
      <pubDate>Wed, 02 Jun 2021 08:00:00 +0000</pubDate>
      <link>https://dev.to/virtualcoffee/how-the-virtual-coffee-coworking-room-works-2a89</link>
      <guid>https://dev.to/virtualcoffee/how-the-virtual-coffee-coworking-room-works-2a89</guid>
      <description>&lt;p&gt;Here's how the Virtual Coffee Coworking Room works, using Zoom, Slack, Airtable, and Netlify Functions&lt;/p&gt;

&lt;p&gt;In our Slack for &lt;a href="https://virtualcoffee.io" rel="noopener noreferrer"&gt;Virtual Coffee&lt;/a&gt;, our members had started a practice of Coworking over Zoom. Coworking is a way to share space with other people while still getting work done, and I thought it was very cool. Members would simply post a personal Zoom link saying something like "starting a Coworking session if anyone wants to join." Eventually we made a Slack channel specifically for this.&lt;/p&gt;

&lt;p&gt;In chatting with our members, I realized we probably could do a couple cool things to support this a bit better. It’d be nice to have an official Virtual Coffee Coworking setup for Zoom, but initially it was unclear how to pull it off. Eventually, though, one of our members shared this article: &lt;a href="https://elizabethgoddard.co.uk/zoom-room-anytime-co-working/" rel="noopener noreferrer"&gt;Setting Up a Zoom Room for Anytime Co-working&lt;/a&gt; by Elizabeth Goddard, which outlined an approach to take for the Zoom side of it, and after that everything sort of took off!&lt;/p&gt;

&lt;p&gt;Here’s a look at how the Virtual Coffee Coworking Room is set up:&lt;/p&gt;

&lt;p&gt;The first part of this is the setup of the Zoom meeting. We followed the same pattern as in the article. The article has all the details, but the important bits are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a new licensed Zoom "user" just for the co-working room&lt;/li&gt;
&lt;li&gt;Create a Recurring Meeting hosted by that user, with the "recurrence" field set to "No Fixed Time"&lt;/li&gt;
&lt;li&gt;Allow anyone to join the meeting before the host&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The only major change I made from the settings listed in the blog post is turning on the "sound notification when someone joins or leaves" - our members requested that pretty much right away. In a room like this where people are working and not necessarily looking at the zoom window all the time, having an audible notice when people enter/leave is a nice feature.&lt;/p&gt;

&lt;p&gt;So what we have now is a link that anyone can go to, that will start a new instance of the meeting if none exists, or join an already ongoing meeting.&lt;/p&gt;

&lt;p&gt;This works great! But, there’s no way to tell when someone’s in the meeting or not without joining, so our next step was to post notices in Slack when the room opens/closes. And, while we’re at it, why not also let the Slack room know who’s in there currently?&lt;/p&gt;

&lt;p&gt;For this we need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Zoom App for event webhooks&lt;/li&gt;
&lt;li&gt;A Slack App to send messages to Slack&lt;/li&gt;
&lt;li&gt;Some kind of back end to handle both of these. We used Netlify Functions and Airtable&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Zoom App
&lt;/h2&gt;

&lt;p&gt;Zoom has &lt;a href="https://marketplace.zoom.us/develop/create" rel="noopener noreferrer"&gt;several different types of Apps&lt;/a&gt; you can create - for us all we needed is one that sends webhooks. Luckily, that’s one of the options!&lt;/p&gt;

&lt;p&gt;So to get started with this, create a Webhook Only app, fill out the basic info, then get in to the Features tab.&lt;/p&gt;

&lt;p&gt;Copy down the "verification token" - we’ll need this later.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://marketplace.zoom.us/docs/api-reference/webhook-reference" rel="noopener noreferrer"&gt;Zoom webhooks apps&lt;/a&gt; are pretty cool - you can create individual subscriptions, each with their own events. For the Coworking room, I’m sending all events to one location, and I’ve subscribed to the following events:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://marketplace.zoom.us/docs/api-reference/webhook-reference/meeting-events/meeting-started" rel="noopener noreferrer"&gt;Start Meeting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.zoom.us/docs/api-reference/webhook-reference/meeting-events/meeting-ending" rel="noopener noreferrer"&gt;End Meeting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.zoom.us/docs/api-reference/webhook-reference/meeting-events/participant-joined-meeting" rel="noopener noreferrer"&gt;Participant/Host joined meeting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://marketplace.zoom.us/docs/api-reference/webhook-reference/meeting-events/participant-left" rel="noopener noreferrer"&gt;Participant/Host left meeting&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F84bqeob872n3mc2hsr16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F84bqeob872n3mc2hsr16.png" alt="Screenshot of Zoom App settings"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note - once app is installed, it will fire this webhook for all meetings for all users on your account, not just the co-working room, so we’ll need to make sure we filter that later.&lt;/p&gt;

&lt;p&gt;Once this is configured and added to your Zoom account, Zoom will start sending notifications to the url you provide any time one of these events occur!&lt;/p&gt;

&lt;h2&gt;
  
  
  Slack App
&lt;/h2&gt;

&lt;p&gt;Next up is creating a Slack App. All our Slack App needs to do at the moment is post or update messages. So - go to &lt;a href="https://api.slack.com/apps" rel="noopener noreferrer"&gt;the Slack App dashboard&lt;/a&gt; and hit "Create New App."&lt;/p&gt;

&lt;p&gt;You can start from scratch or use this manifest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;_metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;major_version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
  &lt;span class="na"&gt;minor_version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt;
&lt;span class="na"&gt;display_information&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Co-Working Slack App&lt;/span&gt;
  &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;A bot for the Co-Working Room&lt;/span&gt;
  &lt;span class="na"&gt;background_color&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;#ffffff'&lt;/span&gt;
&lt;span class="na"&gt;features&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;bot_user&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;display_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Coworking Bot&lt;/span&gt;
    &lt;span class="na"&gt;always_online&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="na"&gt;oauth_config&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;scopes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;bot&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;chat:write.public&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;chat:write&lt;/span&gt;
&lt;span class="na"&gt;settings&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;interactivity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;is_enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
    &lt;span class="na"&gt;request_url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://yourbackend/slack-interactivity&lt;/span&gt;
  &lt;span class="na"&gt;org_deploy_enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
  &lt;span class="na"&gt;socket_mode_enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
  &lt;span class="na"&gt;is_hosted&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It’s a pretty simple app at this point. Note the &lt;code&gt;interactivity&lt;/code&gt; setting - you’ll see later how we use this, but literally all that endpoint does at this point is return a &lt;code&gt;200 OK&lt;/code&gt; response.&lt;/p&gt;

&lt;p&gt;Install the app to your Slack workspace, and make note of the "Bot User OAuth Token"&lt;/p&gt;
&lt;h2&gt;
  
  
  The backend: Netlify Functions and Airtable
&lt;/h2&gt;

&lt;p&gt;So here’s our desired flow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User A starts meeting&lt;/li&gt;
&lt;li&gt;Zoom sends web hook for &lt;code&gt;meeting.started&lt;/code&gt; (and also &lt;code&gt;meeting.participant_joined&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Post a message in our slack Co-Working channel saying the room is open&lt;/li&gt;
&lt;li&gt;In the thread for that message, post that User A has joined the meeting&lt;/li&gt;
&lt;li&gt;Keep the thread updated as members enter/leave by posting "User B has entered," "User C has left" etc&lt;/li&gt;
&lt;li&gt;When the last user leaves the meeting, that instance ends and zoom sends a &lt;code&gt;meeting.ended&lt;/code&gt; event&lt;/li&gt;
&lt;li&gt;Update the original message to say that the current session has ended&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note - The fact that we’re threading the participant updates, as well as that we’re updating the original message, requires that we have some sort of database. If you wanted to put all of this straight in to a Slack channel, you could skip the Airtable portion of this altogether.&lt;/p&gt;

&lt;p&gt;So let’s translate those steps into what our Netlify functions are actually doing.&lt;/p&gt;
&lt;h3&gt;
  
  
  Netlify Functions
&lt;/h3&gt;

&lt;p&gt;I'm not going to dig too far into &lt;a href="https://www.netlify.com/products/functions/" rel="noopener noreferrer"&gt;Netlify Functions&lt;/a&gt; in this article - but if you go with their default setup, you can create a file at &lt;code&gt;functions/my-coworking-function.js&lt;/code&gt;. Once Netlify deploys it, you'll be able to reach it by going to &lt;code&gt;https://mysite.netlify.app/.netlify/functions/my-coworking-function&lt;/code&gt;. This is the url you'll need to use for your Zoom App and your Slack App.&lt;/p&gt;

&lt;p&gt;Another &lt;em&gt;really cool thing&lt;/em&gt; Netlify offers is &lt;a href="https://www.netlify.com/products/dev/" rel="noopener noreferrer"&gt;Netlify Dev&lt;/a&gt;. What this does is set up your local environment to mirror Netlify's for a specific site. So once you link up your site locally to your Netlify site, you can run &lt;code&gt;netlify dev&lt;/code&gt; and you'll have a local version of your site running. The &lt;em&gt;really cool&lt;/em&gt; part of this is &lt;a href="https://docs.netlify.com/cli/get-started/#share-a-live-development-server" rel="noopener noreferrer"&gt;&lt;code&gt;netlify dev --live&lt;/code&gt;&lt;/a&gt; - this allows you to create a local version of your production site that is accessible to the outside world. Why would you do this? Well, when developing your Zoom App or your Slack App, to test changes you'll have to make the change, commit it, push it up, wait for Netlify to build and deploy, and then run the action you're testing. If you use &lt;code&gt;netlify dev --live&lt;/code&gt;, you can give your Zoom App the url provided by netlify, and Zoom will now be sending webhooks directly to your machine. This way you just need to hit save and try again when making changes. It was a massive time saver for this process.&lt;/p&gt;

&lt;p&gt;Moving on, there are a couple bits of information that we've written down in previous steps, and the best way to store this sort of stuff is through Environment Variables. Locally, you can create a &lt;code&gt;.env&lt;/code&gt; file, or can you use Netlify's Environment Variables UI. If you're using &lt;code&gt;netlify dev&lt;/code&gt;, Netlify will pull down any variables set in the UI, but if you've overwritten them via &lt;code&gt;.env&lt;/code&gt; file, it will use those instead. Again, &lt;em&gt;really cool&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The environment variables we're using:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# zoom app verification token
ZOOM_WEBHOOK_AUTH='xxxxxx'

# slack app Bot User OAuth Token
SLACK_BOT_TOKEN='xxxxxx'

# Channel ID to post to
SLACK_COWORKING_CHANNEL_ID='xxxxxx'

# Meeting ID for ongoing meeting
ZOOM_COWORKING_MEETING_ID='xxxxxx'

# If we're using Airtable
AIRTABLE_API_KEY='xxxxxx'

# ID for airtable base
AIRTABLE_COWORKING_BASE='xxxxxx'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You can create &lt;a href="https://www.netlify.com/products/functions/" rel="noopener noreferrer"&gt;Netlify Functions&lt;/a&gt; using Javascript, Typescript, or Go. We’re using Javascript for this. There’s a lot of cool stuff you can do, but honestly to start, it’s easiest for me to just think of Netlify Functions as simply a Javascript file that you can run at any time.&lt;/p&gt;

&lt;p&gt;The file can look like this to start:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;handler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// do cool stuff&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;handler&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;That &lt;code&gt;event&lt;/code&gt; object contains all of the information about the request that we’ll need.&lt;/p&gt;

&lt;p&gt;When we set up the Zoom webhook, we can point it to this file.&lt;/p&gt;

&lt;p&gt;The first thing we’ll want to do is verify it’s coming from our Zoom app. You can compare the Verification Token from the Zoom app to make sure it’s really our Zoom app and not some rando:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;authorization&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ZOOM_WEBHOOK_AUTH&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Unauthorized&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;statusCode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;401&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Zoom sends the verification code in the "authorization" header, so it’s easy to check.&lt;/p&gt;

&lt;p&gt;Then we can move on to handling the webhook!&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// parse the event body to get to the JSON&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;When zoom sends a webhook, it’s sending a JSON payload that generally looks like this:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"event"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"meeting.participant_left"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"event_ts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1234566789900&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"payload"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"account_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"o8KK_AAACq6BBEyA70CA"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"uuid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"czLF6FFFoQOKgAB99DlDb9g=="&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"111111111"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"probably-more"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"params here"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;code&gt;payload.object.id&lt;/code&gt; is the meeting ID, while &lt;code&gt;payload.object.uuid&lt;/code&gt; is the instance ID. So the first thing we want to do is make sure the meeting ID matches our Coworking meeting ID. Remember, once this Zoom app is installed, &lt;em&gt;all meetings&lt;/em&gt; will fire off this webhook. Easy enough:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ZOOM_COWORKING_MEETING_ID&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// we’re good to go&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Next, we can decide what to do based on the event type - I used a switch statement here:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;switch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="nx"&gt;EVENT_PARTICIPANT_JOINED&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="nx"&gt;EVENT_PARTICIPANT_LEFT&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="nx"&gt;EVENT_MEETING_STARTED&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="nx"&gt;EVENT_MEETING_ENDED&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Let's run through the events:&lt;/p&gt;
&lt;h3&gt;
  
  
  Event Started:
&lt;/h3&gt;

&lt;p&gt;We get an event of type &lt;a href="https://marketplace.zoom.us/docs/api-reference/webhook-reference/meeting-events/meeting-started" rel="noopener noreferrer"&gt;&lt;code&gt;meeting.started&lt;/code&gt;&lt;/a&gt;. We'll want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;web.chat.postMessage()&lt;/code&gt; via the &lt;a href="https://api.slack.com/web" rel="noopener noreferrer"&gt;Slack Web API&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Save a record of that to Airtable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once nice thing we can do is take advantage of &lt;a href="https://api.slack.com/block-kit" rel="noopener noreferrer"&gt;Blocks&lt;/a&gt; - a neat way to build more interactive messages. So instead of a plain-text message, we get something that looks more like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1trb3iysfbdpjohqvaox.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1trb3iysfbdpjohqvaox.png" alt="Screenshot of coworking message in Slack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This also allowed us to very easily put up a dialog to prevent accidental joining and to add some information:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flmcng6f6pi6239vcr5qs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flmcng6f6pi6239vcr5qs.png" alt="Screenshot of coworking alert modal in Slack"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's the configuration we used:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"blocks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"section"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mrkdwn"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"A new Co-Working Session has Started!"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"accessory"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"button"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"plain_text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Join Now!"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"emoji"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"value"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"join-meeting"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://link-to-meeting"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"action_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"button-action"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"style"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"primary"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"confirm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"plain_text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Heads up!"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mrkdwn"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"This is a Zoom link - following it will most likely open Zoom and add you to our Co-Working Room. &lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt; Additionally, as always, our &amp;lt;https://virtualcoffee.io/code-of-conduct|Code of Conduct&amp;gt; is in effect. &lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt; Just want to make sure we're all on the same page 😃"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"confirm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"plain_text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Let's go!"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="nl"&gt;"deny"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"plain_text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Stop, I've changed my mind!"&lt;/span&gt;&lt;span class="w"&gt;
          &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The button accessory + confirm requires interactivity to be turned on…for some reason. If you don’t do this step, everything still works, but users will also see an error when they go back to Slack. It’s really annoying, but fortunately, the interactivity endpoint doesn’t have to actually do anything. Here’s our entire Slack Interactivity endpoint:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const handler = async function (event, context) {
  return {
    statusCode: 200,
    body: '',
  };
};

module.exports = { handler };

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The &lt;a href="https://api.slack.com/methods/chat.postMessage" rel="noopener noreferrer"&gt;postMessage&lt;/a&gt; function returns some information about the request, including the timestamp of the message. This is basically the "ID" for the message - it’s what we’ll use to post threaded messages, and to update the message when the meeting ends.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;web&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;postMessage&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;SLACK_COWORKING_CHANNEL_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;A new Co-Working Session has Started!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="c1"&gt;// blocks config from above&lt;/span&gt;
  &lt;span class="nx"&gt;blocks&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Next we create a record in Airtable using &lt;a href="https://github.com/airtable/airtable.js/" rel="noopener noreferrer"&gt;Airtable.js&lt;/a&gt; with the Zoom meeting instance uuid and the slack message timestamp. We’re also noting the start_time, but we’re not actually using that at the moment.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;created&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;base&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;room_instances&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;instance_uuid&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;slack_thread_timestamp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ts&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;start_time&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;start_time&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Participant Joined/Left
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://marketplace.zoom.us/docs/api-reference/webhook-reference/meeting-events/participant-joined-meeting" rel="noopener noreferrer"&gt;meeting.participant_joined&lt;/a&gt; and &lt;a href="https://marketplace.zoom.us/docs/api-reference/webhook-reference/meeting-events/participant-left" rel="noopener noreferrer"&gt;meeting.participant_left&lt;/a&gt; have almost the same exact behavior:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Find the Airtable record with the matching uuid&lt;/li&gt;
&lt;li&gt;Use the Slack message timestamp to post messages to the thread.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One issue here though: Zoom sends the Meeting Started and the Participant Joined events at the same time. Furthermore, the Meeting Started event contains no information about the user. So this is a race condition that we need to handle - the Participant Joined event will try to find that Airtable record, but it doesn’t exist yet because the Meeting Started action hasn’t finished. So - I solved this by basically adding in some "retry" behavior - if we didn’t find the matching Airtable record, pause for a second and retry. Do this a few times until we find it - if we haven’t found it after 5 tries, probably something weird happened.&lt;/p&gt;

&lt;p&gt;I’m sure this behavior can be improved, but it’s mostly working for now!&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// returns a roomInstance record, or undefined.&lt;/span&gt;
&lt;span class="c1"&gt;// Will retry 5 times, pausing 1 second between tries.&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;findRoomInstance&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;base&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;instanceId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;tryFind&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;resultArray&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;base&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;room_instances&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;select&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="c1"&gt;// Selecting the first 1 records in Grid view:&lt;/span&gt;
        &lt;span class="na"&gt;maxRecords&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;view&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Grid view&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;filterByFormula&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`instance_uuid='&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;instanceId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;'`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
      &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;firstPage&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;resultArray&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;ms&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;roomInstance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;tryFind&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
  &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;roomInstance&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;trying again&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nx"&gt;roomInstance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;tryFind&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;roomInstance&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`room instance &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;instanceId&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; not found`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;roomInstance&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Once we have the Slack timestamp, we can use &lt;code&gt;web.chat.postMessage&lt;/code&gt; again to update our attendance:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;username&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;zoomRequest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;participant&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;user_name&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;web&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;postMessage&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;thread_ts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;roomInstance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;slack_thread_timestamp&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nx"&gt;zoomRequest&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;meeting.participant_joined&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
      &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;username&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; has joined!`&lt;/span&gt;
      &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;username&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; has left. We'll miss you!`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;SLACK_COWORKING_CHANNEL_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Meeting Ends
&lt;/h3&gt;

&lt;p&gt;When the last participant leaves, that instance of the meeting ends and Zoom sends us a &lt;a href="https://marketplace.zoom.us/docs/api-reference/webhook-reference/meeting-events/meeting-ending" rel="noopener noreferrer"&gt;&lt;code&gt;meeting.ended&lt;/code&gt;&lt;/a&gt; event, so we update the Slack message to let everyone know nobody is in the meeting currently.&lt;/p&gt;

&lt;p&gt;To update a message, we need to find the Airtable record again, and then we can use &lt;code&gt;web.chat.update&lt;/code&gt; to update the body of the message with some new text. This update has the same blocks as above, but with a message like "The current Co-Working Session has ended."&lt;/p&gt;
&lt;h2&gt;
  
  
  That's It! 😅
&lt;/h2&gt;

&lt;p&gt;There are certainly a few moving pieces here, but it was pretty fun to build.&lt;/p&gt;

&lt;p&gt;I've open-sourced &lt;a href="https://github.com/Virtual-Coffee/webhooks" rel="noopener noreferrer"&gt;our webhooks repo&lt;/a&gt; - there are some differences from this article but it could be instructive to see one that is currently live. This repo handles some other events aside from the coworking room, so keep that in mind if you're using it as an example.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Virtual-Coffee" rel="noopener noreferrer"&gt;
        Virtual-Coffee
      &lt;/a&gt; / &lt;a href="https://github.com/Virtual-Coffee/webhooks" rel="noopener noreferrer"&gt;
        webhooks
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Repo/Netlify App for responding to various webhooks
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;webhooks&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;Repo/Netlify Functions for responding to various webhooks&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;&lt;code&gt;/event-reminders&lt;/code&gt;&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;A &lt;a href="https://docs.netlify.com/functions/build-with-javascript/#background-function-format" rel="nofollow noopener noreferrer"&gt;Netlify background function&lt;/a&gt; for sending event reminders to our Slack via cronjob.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cron Jobs are set up on &lt;a href="https://cron-job.org" rel="nofollow noopener noreferrer"&gt;cron-job.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;The Netlify function makes a GraphQL request to our CMS to get upcoming events - &lt;code&gt;weekly&lt;/code&gt;, &lt;code&gt;daily&lt;/code&gt;, and &lt;code&gt;hourly&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Then we filter the events and post to Slack using Slack's &lt;a href="https://app.slack.com/block-kit-builder" rel="nofollow noopener noreferrer"&gt;Block Kit&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;&lt;code&gt;/slack-send-message&lt;/code&gt;&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;A &lt;a href="https://docs.netlify.com/functions/build-with-javascript/#background-function-format" rel="nofollow noopener noreferrer"&gt;Netlify background function&lt;/a&gt; for sending messages to Slack via the &lt;a href="https://api.slack.com/web" rel="nofollow noopener noreferrer"&gt;Slack Web API&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This function accepts POST requests to send specific messages in Slack. This is set up as a background function in order to prevent our slack event handlers from backing up, and to abstract the Web API connections into one service. All other functions listed below may use this to send messages to Slack.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;&lt;code&gt;/slack-events&lt;/code&gt;&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Handles &lt;a href="https://api.slack.com/apis/connections/events-api" rel="nofollow noopener noreferrer"&gt;Slack Events&lt;/a&gt; for the VirtualCoffee.io Slack App.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Subscribed events:&lt;/h3&gt;

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;team_join&lt;/code&gt; - sends a &lt;code&gt;action: 'join'&lt;/code&gt; &lt;code&gt;POST&lt;/code&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Virtual-Coffee/webhooks" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Some possible next steps for improvement:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instead of a text thread, we could actually make use of some interactivity to have a "currently in the meeting" block&lt;/li&gt;
&lt;li&gt;We’ve been adding some other features to our Slack app, like an App Home Screen. Adding the Coworking stuff in there could be pretty cool&lt;/li&gt;
&lt;li&gt;Any other things we think of!&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>netlify</category>
      <category>coworking</category>
      <category>slack</category>
      <category>zoom</category>
    </item>
  </channel>
</rss>
