Why I’m Returning to WordPress After Exploring Next.js, Nuxt, and Hugo

Last project I created, sakuarua. It’s a money management just like banking system, as I said banking system for personal usage. I use combination of latest technology and framework to make it true, vue.js, react.js, express.js, and postgresql. I don’t want heavy feature framework like next.js or nestjs to create flexible, lightweight, and control just like I wanted.

Everything run smoothly so far, until I started building the CMS for the website to increase SEO optimzation. At first, I use nuxt, fortunately it have several module that help me create content and manage SEO. Module Nuxt Content to convert markdown to HTML, and nuxt SEO to create head tag for Search Engine.

At first, I love how lightweight and easy to setup. However, the lack of support to use relative path of images is problematic. Instead putting the images into directory content—which is the same folder with markdown file, I must put it public directory. I expect it because Hugo do that.

Unfurtonately, the pain of breaking workflow of creation content can’t handled by me. Should I rewrite to Hugo? I tried it for couple hours, but the pain to rewrite code is boring and slow the progress. To avoid stagnation, I’ve decied to pivot with different approach.

I tried headless CMS like directus and strapi. It’s easy to use, customisable, and lightweight. But, setup the data model similar how content works also boring—sorry, I’m boring person. Why boring?, I have to translate nuxt content model into strapi or directus model, rewiring the content to API, setup menu, and maybe data in landing page. Also, I don’t like form field content as big box textarea.

Moving on to ghost as my next option. It have built-in content data model, menu management, built-in content WYSIWYG, user management, analytics, and subscription. I tried install to local machine, it’s lightweight and using node.js under the hood. Ghost goal to create publishing platform easy and fast, I’m not publisher and my website is small, I have no audience. At a moment my heart goes to ghost, but when I tried to customize the themes, eventhough I know how handlebars works as their tempate language, but I have to learn the layout, priority page, how each page rendered, how to create new page from scratch. Also, I don’t know how to update the theme besides upload it manually evertime it changes. Breaking the ghost code, documentation, and jump to multiple discussion makes me tired. I gave up to create custom themes.

Actually ghost able to run as headless CMS, I think it’s a good idea and they have dedicated documentation JAMStack Nuxt. But it have trade-off, I can’t use image optimization, subscription and membership as written in their documentation. We have to manually configure SEO and permalink.

Finally, implementing wordpress. Since I have experience to setup wordpress, I easily spin up a fresh wordpress, a database, nginx configuration and authentication. I find my self easily lock-in when customize theme using gutenberg WYSIWYG until I realize it’s 23 o’clock. Without expensive plugin, lightweight-in-mind, cache here and there, my wordpress run smoothly and fast. It doesn’t take much time to create and setup the website. The WYSIWYG makes feedback loop faster. Once more, WordPress win again.

I just learn why feedback loop is important in development process, that’s why WYSIWYG wins over hard-coded, Node-based editor wins over code, AI win over coding, and wordpress win over fancy framework. It’s about control, low control with low effort means you will get more pre-configuration to achieve your goal but heavy weight is inevitable, and high control wigh high effor means you control everything and lightweight but you have to spend much time in it. It’s over to you as engineer to setup the project using several level of control in some aspect. You should know where effort should focused on, because you have limited resources.

I’ve built Sakuarua; although it’s currently limited to Bahasa Indonesia, I’d love for you to check it out. Thank you for your time. Until next time.

Subscribe now!