Re(curring dates) + calendar = Recalendar
The Recalendar module integrates fullcalendar.js with Drupal 8.
There are a number of Drupal 8 modules that have the same goal, but they do not support recurring dates.
Only works with PHP 7.1 and higher.
The Rest and Serialization modules in Drupal core will be enabled during installation.
The following contributed module will be automatically installed when you use composer to install
Recurring Dates Field - https://www.drupal.org/project/date_recur
composer require drupal/date_recur:2.0
It is recommended that you install the Recurring Date Field Modular Widgets module in order to have a nice widget for the recurring date field.
The required external javascripts are included in this module.
Fullcalendar.js (documentation can be found at https://fullcalendar.io/docs)
Moment.js (documentation can be found at https://momentjs.com/docs/)
The following command installs Recalendar, its dependencies (date_recur).
composer require kanopi/recalendar
There is an "Allow administration of Recalendar settings" permission that can be granted to additional roles (admin role has this permission by default).
By default, the calendar provided by this module is available at /recalendar. This can be changed at /admin/config/recalendar. Remember to rebuild caches after making this config change.
Note: if you want to change the /recalendar path alias and page title to something else (e.g., /calendar or /events), you can change it at /admin/config/recalendar. Remember to rebuild caches after making this config change.