JAMStack minimalism

A few years ago I've started experimenting with Next.. and I've somehow stepped into jamstack.wtf. Hell, that changes everything I was ever thinking about web development.

Jamstack midjourney illustration

Cruel Honesty behind

When I shipped brand new website for a client, I always imaginated how these guys sits behind computers and will shape it content. But be honest. This almost never happened. They were happy they got something and let it be as is. And Jamstack. Jamstack is brutally honest with this. You really don't need to render the very same page again and again and again if it doesn't change once.

This honesty transforms my struggle to the great advantage.

Timeless

Jamstack website will be there for you forever. If you stay minimal of course. But on a very core level, you simply generate pure HTML content and it simply works.

Unhackable

In core there are no space for SQL-injection, XSS, whatever injection. No way to write to your filesystem. Nada.

Of course, you might still need some logic. Thats why there is API in jAmstack. But API is on its own.

Fast by nature

Oh, and have I told you how blazing fast it should be? It's just HTML. Ready to serve. No computing behind. It's like going to fast food with one option. They already have it ready for you.

Resourceless

You can serve your Jamstack website from Raspberry Pi powered by potato connected to the Internet. Or use some provider or CDN. Which made it even faster from all around the world.

You also need some computing only when you make change. Which will be probably not so often in many common cases. Even marketing websites for middle to large scale companies are not changing every day. We currently pilot whole customer knowledge base this way.

Minimalistic stack I used behind

Now you probably understand that I'm a fan of underlaying tech. But when I start thinking about how next export something. I was also thinking what else I don't need.

CMS-less

I really like idea about headless CMSs. And whole decoupling CMS from content. But for some cases I just really don't need CMS at all.

Breakdown of stuff I need for simple use cases:

  • Routing (to create page with some title and URL and maybe some other stuff)
  • Content (to write something inside)
  • Media (some images)

And this. This must work without any CMS. And it does.

Routing by filesystem

Content files are straightforwardly named with its desired URL in my minimalistic Jamstack approach. I simply render recursively whole content/ folder as HTML pages. This brings many features "for free". I'm unable to make same URL for two different pages by nature of FS. I can also make structure easily just by creating folders. I can search in pages, sort them by last change or alphabetical order. All done by natural mechanisms.

Markdown or better MDX

If you work with some tools like Slack, Asana, Github, whatever. You probably use some subset of Markdown already. And you probably like it. Markdown is a something I can explain to any marketing folk in a few minutes, even they fear a lot at the beginning.

Upgrading Markdown to MDX is just a more complexity, but it's like entering enchanted forest. Now you can use any component you like. You can do really complex stuff just by filling some defined props. You'll probably copy-paste existing component and rewrite some words.

It's way easier then taxes. And sorry all great WYSIWYG editors, but here you have all the control.

Media (images)

This one was tough. This might be the biggest UX (devX) disadvantage. The tradeoff I made here is definitely in favour of small repository size. That means no media in repository. So I needed to decouple it too. Bringing me whole power of CDN (Cloudinary in my case) delivered media for a big price of handling it separatedly.

There are also some stuff I've got by collateral.

Bonus 1: Full version control

Whole content is in Git repository. So you can see, review and revert any change in content forever. Not even best CMS can provide you this.

Bonus 2: Observability

Whole content is in one folder. So you can simply hit Cmd+Shift+F and search (or replace) anything you are looking for. No more digging if it's somewhere hardcoded, or in content (in some database structure), or the hell where can I edit this. No matter you want to edit header, footer, content or some data object. It's all in way written at one place.

Bonus 3: Unbreakable production

Unlike some rich text editors which allows you to make something bad. When some error occurs in Jamstack, building pipeline fails. Which means your new corrupted version of code didn't make it on the Internet. Instead of breaking your website, you'll get notification. There will be previous (current) version of the website until you make it right.


Despite all written above. Despite I'm a fan of Jamstack, minimalism and not-doing-same-stuff-again-and-again. There are not many websites done like this. There are still lot of heavy duty CMS powered websites for simple, mainly static use cases. Just because it has it's infrastructure, legacy, habits, whatever. But I'm staing positive, looking forward to see more website that are not heating planet anymore.