TL;DR: a new ember-fullcalendar addon based on Fullcalendar v4 is released this week. Here is some of my process and decisions.
My day job is working on a large SaaS application at Mariana Tek. We help boutique gyms with their business operations, which means our application serves a lot of purposes: point of sale, time clock, class scheduler, and a lot more. Having to write all this functionality from scratch would be difficult if not impossible, so I'm grateful for plugins in general and Ember's painless addon system in particular.
While our application is on an earlier version Ember 3, we're in the process of a long walk to the exciting Ember Octane. Part of this process has been gradually updating our addons. Our application, which is over four years old, had accrued some addons that are now abandoned. Most of these were easy to address, with one big exception - Fullcalendar. Fullcalendar is a fantastic tool that allows the user to provide a fully-featured scheduling calendar (e.g. Google Calendar) with minimal code. The Ember Fullcalendar addon hadn't been updated in over a year and I really didn't want to write a calendar from the ground up. The writing was on the wall; I was going to have to write my first Ember addon.
Well, not quite...
In actuality, my first inclination was to see if I could chip in with the current Ember Fullcalendar plugin, but I found that Fullcalendar had done a major upgrade moving from version 3 to version 4; having removed jQuery and Moment as dependencies, and updated their API. If I wanted to fully get rid of jQuery as a dependency in our app it seemed I would have start from scratch.
fullcalendar-react package and was pleasantly surprised to find that it barely breaks fifty lines of code.
fullcalendar-react provided the idea to avoid explicit bindings for each property or attribute and simply batch updates and pass them along to Fullcalendar.
didUpdateAttrs(). This makes the addon easier to maintain as I can upgrade its Fullcalendar dependency version with minimal updates to the addon's code. The Ember best practice of Data Down, Actions Up aligns well with React's philosophy and if you account for differences in each framework's API many patterns are easily transferable.
Try it out
The addon can be installed using
ember install @mariana-tek/ember-fullcalendar. You can find further instruction in the documentation.