DEV Community

Cover image for How I developed a modern JAMStack website

How I developed a modern JAMStack website

Joseph Mukorivo on February 15, 2022

Overview In 2021 I started working on a rebranding project for a company that I was working for in 2020. Here is a link to the project. ...
Collapse
 
chasm profile image
Charles F. Munat

Here's what I'm using for the web application I'm building:

HTML
CSS
JS (TS)

Works like a charm. Very, very fast. Totally accessible. No worries about the security of other devs' code or any dependency on them to test well, stay current, etc. And the code is actually a lot simpler, but the user can't tell the difference (except that it's faster and more responsive).

The tools you think are saving you time will cost you time sooner than you think. And time is money. And the time you waste learning Tailwind and React, etc. is time you can't spend becoming expert at what actually works in the browser: HTML, CSS, and JS. How well do you really know any of those three? And yet they are the only languages the browser actually cares about.

We've rushed headlong down the tunnel of cool toys so far and so fast that we can no longer remember what it was we were looking for. Now, it's all about the toys.

Collapse
 
josemukorivo profile image
Joseph Mukorivo

Thanks for the insight, but at the same time I also there are times when using these tools will be good, like if you have time constrains using something like tailwind for styling will be faster than writting custom css since you wont have to worry much about things like cross browser compatibilty.... React also helps in other things like sharing code easily by creating reusable components...

But in general I think the tools we use for a given project should differ depending on the constrains we have.

Collapse
 
chasm profile image
Charles F. Munat

Yes, constraints determine the tools, but that's the point. The real constraint here is the serious lack of front-end developers who actually know their tools: HTML, CSS, and JS. Most of these other tools of which you speak were invented to prevent devs from ever having to learn their true craft. How sad.

Become an expert in HTML and CSS first, then see if you really need anything else. You might, but it certainly won't be a huge stack of overly complex libraries and frameworks.

Collapse
 
gi_dev profile image
G_dev

"And the time you waste learning Tailwind and React"

Learning React isn't a waste of time, we use it a lot at work.

Collapse
 
chasm profile image
Charles F. Munat

Actually, I have to use it at work, too. And from that I know that this only multiplies the waste. It is true that from the perspective of finding a job knowing React or similar will help greatly. But how sad is that?

We have complicated software up to absurd and obscene levels and pretended that it was because we were doing "enterprise" work. But the more complex the software, the more difficult and time consuming it is to build and maintain, the less secure it is, and the more it tends to break.

So the fact that "everyone" is doing it and so we all have to jump on the bandwagon, too, if we want to make good money in dev is not a reason to cheer, but a sad waste of time, money, and most importantly resources on a planet with an ever-dwindling supply.

My philosophy is simple: don't build anything until you have to, and build it as simply and cleanly as possible. Of course, to most devs this is pure heresy.

Thread Thread
 
gi_dev profile image
G_dev

Plain html/css/js would just make my work more stressful than it already is.

Maybe for a personal project I would consider it. But it would have to be really simple. Building a complex front end without a framework would be setting yourself up for a headache.

Collapse
 
ozzythegiant profile image
Oziel Perez • Edited

I personally use Gridsome for static websites. It's Vue based and creates pure HTML files with javascript files on the side. For react you may want to look at Gatsby (the react equivalent of Gridsome) as it's more perfomant for websites with a lot of content (dozens or even hundreds of pages). No need to run Node.js in the back end, at least not to serve web pages and unless your CMS is Node.js based. In such a case, I recommend Directus or Strapi as the CMS

Collapse
 
josemukorivo profile image
Joseph Mukorivo

I used NextJS on this one.The site is not really 100% static, there a couple of pages with dynamic content. NextJS is a good choice in those situations. Will check gridsome I happen to learn Vue.

Collapse
 
divofred profile image
Fredrick Emmanuel

I think you should add what JAMStack is.
Just a suggestion

Collapse
 
josemukorivo profile image
Joseph Mukorivo

Thanks will update the post accordingly.

Collapse
 
andrewbaisden profile image
Andrew Baisden

Great article the Figma + React tech stack is so popular now. My latest website was built with it too.

Collapse
 
omarpervez profile image
Omar Pervez

You did a Great Job. ☺️

Collapse
 
josemukorivo profile image
Joseph Mukorivo

Thanks Omer

Collapse
 
omarpervez profile image
Omar Pervez

Welcome Joseph

Collapse
 
juanvegadev profile image
Juan Vega

Hi Joseph, did you evaluate remix.run? I am currently checking which framework learn next and I'd appreciate insights of nextjs vs remix here

Collapse
 
josemukorivo profile image
Joseph Mukorivo

Hi Juan, I looked at remix.run docs I think once or twice so my response on that will probably be biased. But I think as of now nextjs has the advantage of being mature so there is a lot of developer tooling. You can try nextjs

Collapse
 
juanvegadev profile image
Juan Vega

Fair point, thanks for answering

Collapse
 
mathieuhuot profile image
Mathieu Huot

Nice exemple of a real world full stack Jamstack! May I ask what you use for hosting? I usually see this type of architecture with different hosting for frontend and backend. Just curious. Thanks for sharing! πŸ˜„

Collapse
 
josemukorivo profile image
Joseph Mukorivo

Both the frontend and backend are hosted on a private server, but if your users are distrubuted across the the entire globe or maybe continent using something like netlify or vercel will be good they have good CDNs.

Collapse
 
xsteacy profile image
Steacy Paquette

You could also use Cloudflare or GitHub pages for the frontend (free).
Heroku for the backend so you can easily use a database for Strapi. (Free too but paid options)
Just other suggestions.

Collapse
 
josemukorivo profile image
Joseph Mukorivo

Thanks, but the client wanted to use their own infastructure. I use Vercel for my personal projects.