MC3: My First Nonprofit

GatsbyNextJSPrismic

Monday, February 19, 2024

MC3, or the Monmouth County Curriculum Consortium, is a wonderful organization run by internally elected members in 2-year terms. I completed a little more than one year of my term, but in that time, I migrated the organization's web presence from a Google Site to GatsbyJS and finally to NextJS.

MC3 A Non-Profit Project by Neil Mastroianni

Why Would I Rebuild Their Site Twice?

That's a fair question. An argument could be made for not needing to migrate to NextJS. I hope to show you what I did and why I did it in just a few minutes.

Why I Rebuilt it the First Time

Deciding on a website platform is not always easy. What makes the decision even more difficult is training a new group of leaders to use the tools every two years.

Google letter G logo

Before I started in my role, MC3 had made its web presence through a no-code tool. Many school districts use Google, so a Google Site was the tool of choice. Google Sites have come a long way in being responsive. The classic sites had a blog, but the "New" Google Sites did not. Collectively, the leaders of MC3 wanted to improve the branding and user experience for its members.

Why Did I Avoid Prismic?

If you saw my prior project where I leaned on Prismic, you know that I decided against using Prismic for MC3. This was because Prismic content editors could easily and mistakenly edit the types rather than edit the content. I wasn't sure who would edit MC3's content after my term.

I knew MC3 was "going Google," thanks to their free non-profit tier. This allowed me to explore the source plug-in gatsby-source-google-docs. This meant I could set up a folder in Google Drive and let MC3 members add Google Docs to the folders. When content was added, a rebuild could be triggered via webhook, and the new content would be available. This felt more "fool-proof" than risking it with Prismic + Gatsby.

Why I Rebuilt It the Second Time

During my time with MC3, I began to feel concerned about Gatsby and the reliance upon the plug-in developers. I wondered what would happen if the Google Docs plug-in stopped working and the developer abandoned the project. This would be very bad. If I were no longer the technology consultant, this would become a burden for the current consultant.

The second piece to this puzzle came when I discovered Prismic's Slice Machine. Besides being an awesome developer tool, Slice Machine removes the need to use the Prismic Legacy Type Builder. I could confidently turn the CMS over to future technology consultants without the worry of the models being edited.

There was a problem. Slice Machine was not available for Gatsby. And this is why I had to rebuild the site again...

Why Is NextJS My New "Go-To" Framework?

As I just alluded to, Gatsby wouldn't be an option if I wanted to use Prismic. This left me with two possible choices: learn to use Next or learn to use Nuxt. Since GatsbyJS and NextJS are both React meta-frameworks, Nuxt was not going to be the smoothest transition for me.

Incremental Static Regeneration 🤯

Something new to me for this project was integrating a Google Calendar into a page. Thanks to NextJS's incremental static regeneration (ISR), MC3 members could add, edit, and remove events on a Google calendar.

Google Calendar Events in a NextJS Project Using Incremental Static Regeneration

These events would be added to the calendar page, which would be revalidated every 15 minutes. A full site rebuild was not required to fetch and display updated content.

While there are some things that I still really like about Gatsby, making a move to NextJS has been a very enjoyable experience. MC3 is still running on the Pages router with JavaScript, but I have since moved to the App router with TypeScript.