Hi dev.to!
Last year I was hired to build out a website for a nonprofit feminist collective. I chose GatsbyJS+Netlify to drastically cut down costs.
Tell me what you want, what you really really want π€
When dealing with nonprofits, costs are always something to consider for obvious reasons, money is hard to come by and a stream of cash is not always guaranteed.
For this website the girls required to do some blogging, event publishing with image galleries and most importantly, build a support network (in this case a directory) for women entrepreneurs to sign up and have their business listed on the platform. So we're talking hosting, CMS integration, forms, image+data storage and confirmation emails.
As developers we tend to get overly excited about trying and learning new things, and our clients aren't any different, they're always buzzing with ideas and opinions and a tight budget, here's where we need to meet halfway.
So, let's balance things out, as a developer, it's important for me to cut down on the time I spend coding the site to avoid increasing my prices hence making it less possible for a nonprofit to afford my services.
I can be your hero baby! β The JAMstack π
After sorting out the requirements, I started to make a list of the tools/frameworks/platforms available that overlapped with our goals.
βοΈ GatsbyJS - static rendering. Just upload the files to a CDN service and you're good to go. Good for me since I already knew React and I would get to learn Graphql (I was super overdue on this one).
βοΈ Netlify - free hosting and SSL. Yep, hosting has gotten so cheap in recent years, they don't ever bother on charging it anything anymore, they even get you a SSL certificate for free to use with your own domain. This bad boy will make you forget about DevOps while giving you a continuous deployment pipeline (you can test features on different branches before publishing). Messed up the build? No problem, Netlify keeps a history of every build and won't serve if it's broken.
βοΈ Github - for the independent headless blogging who needs no database π
. We just need to point Netlify to our Github repo and it will take care of the rest. We don't need to spend our precious $ on saving information to a database is meant to be public anyway.
βοΈ NetlifyCMS - free headless CMS. There are plenty of tutorials and a Gatsby starter to get the ball rolling. Is simple and intuitive, but powerful at the same time, is built with React so I was able to create custom widgets and fields and make it super tailored the girls needs.
βοΈ Firebase functions - confirmation emails. When a user registers their business they get a conformation email and once it's reviewed and accepted will get another one, to sort this out I used NodeJS with Nodemailer to deploy a couple of functions to Google Firebase. Inside those functions just setup a couple of triggers on Firestore's collections and voilΓ .
GatsbyJS beyond the Blog
I've been following Gatsby's roadmap for some time now, I try to attend every webinar to learn more about current and future updates, is actually really exciting how they plan to go beyond just static rendering. PS. I think I'm fangirling now π
In the JAMstack world is not all rainbows and butterflies, depending on the project there could be some constraints and it might not be a great fit, but is worth giving it a go when there's a match.
There ain't no such thing as a free lunch π
I also did some other API integrations that are not entirely free, such as Firestore, Firebase functions and Cloudinary, but their free plans are very generous, they will suffice for small websites such as this one. When choosing a third party API, be cautious, since sometimes can be tricky to estimate costs correctly.
Most people ignore the hidden costs of using website builders like WordPress, yes it's true you can get up and running with minimal investment, but they fail to account for maintenance costs such as upgrades, backups and general cleanup of plugins, broken links, etc.
These costs can be reflected in different ways, either the time it takes you to learn how to properly maintain it, hiring a developer do to it for you or ignoring it until something fails and emergency mesures need to be taken (when π© hits the fan πΈ).
Party time! π
In this case study for Chicas al Frente (Girls in Front), we saved a significant amount of money in hosting and maintenance costs without sacrificing quality, in the contrary, they get to enjoy the benefits of static sites and GatsbyJS in particular (like PWA), such as better performance and security; plus Netlify's CDN delivery, hosting, security and CMS.
As a developer working with this stack for the first time, I have to say it was a very pleasant experience, you do have to get around some limitations but that is expected. Not having to worry about dealing with recurrent software upgrades and security patches, is also very nice π
Top comments (6)
The site looks amazing! Many a great project idea has withered on the vine because of the hosting costs, and you can't beat the scalability and performance of JAMstack!
Hi Joe, thank you! Yes! Scalability is one major issue when dealing with monolithic platforms.
Even many small businesses struggle with this, they hire a developer to use a site builder and customize a theme, but when is time to scale, it can be tough sometimes.
Hi Jon! There was little training involved actually, it was funny because they knew WP editor and liked Netlify's better π€· for example they loved the editor workflow feature, and I just had to add one line of code to enable it, other than that, the only main difference is how changes are published (the site has to build and it takes a few minutes, though is already in Gatsby's roadmap for improvement) but that is definitely not a problem for them.
As an alternative to the paid backend services you mentioned (cloudinary and firebase), did you look at google appengine's free tier? Its pretty good from what I've heard and supports multiple languages including python, php, java and JS.
BTW, a nice article and gr8 website π
Great article! I've bookmarked it so I can reference it later. Thanks for sharing!
Thanks! Glad you find it helpful Mandi :)