A while back I took it upon myself to design a new website for my debating society. I had a number of constraints that I know others have, and I think I’ve found the best solution, at time of writing.
-
Low technical complexity for authors. For most members of the society they have never heard of git. So it needs to have something like a WYSIWYG editor.
-
Low Cost. This is for a cash strapped charity, there are other, more important places to spend the money. In the end I was able to make it free to run, which is extra good as it saves the treasurer time.
-
Low technical complexity. I’m not going to be around forever, and I don’t want for whoever takes over to have a huge maintenance burden.
Luckily this is a fairly small website, and modern tools have made this easy. The stack consists of Gitlab Pages, Hugo, and StaticCMS. If you just want to see an example you can find the repo here. All of these tools are open source, which should make any future migrations substantially easier.
Gitlab
The obvious solution in this space is GitHub Pages, and that’s what I use for this website. But one of the needs of StaticCMS is an authorisation. The details are beyond this post (and me), but what’s important is that GitHub doesn’t support PKCE for OAuth apps. That means I’d need to rely on an external service like Netlify identity to handle the login flow. That’s an unattractive solution due to the extra complexity. Fortunately, Gitlab does support it. Gitlab provides all the other services of GitHub, so it was an easy replacement.
I have found GitLab’s time to first byte to be higher than Github’s, but that may just be a consequence of living in NZ.
Hugo
I’ve tried other static site generators in the past, but I haven’t found any as easy or powerful as Hugo. It also has a lot of useful features like minifcation built in. It being quick to build was a bonus in the development process. It is the most replaceable part of this stack though, so whatever works for you.
StaticCMS
This is the core of the admin interface, and the tool that enables the whole static architecture. It provides the easy interface for content authors, I found it extremely easy to get started. It runs as a client-side SPA, which is ideal. While I did find a few spots that need work, it does the basics well. The big alternative in the space is DecapCMS, which StaticCMS forked off of. The changes aren’t huge, but they’re appreciated. They’re things updating react, dropping backends I’m not using, and cleaning up options. The community also seems more active.