Keramische Tegel Shop
Goal: Building a webshop with Next.js for a client, with product management in a headless Wordpress environment.
Technologies:
1. Typescript, first time really using Typescript
2. Next.js, worked with it before, but not for such a big website
3. Headless Wordpress, this is the first time i've used Wordpress as a headless CMD
4. Mollie as a payment provider (via Woocommerce in Wordpress)
5. Used Tailwind CSS
Most important lessons:
1. I wouldn't use Wordpress as a Headless CMS again.
Even though it worked as expected, it wasn't nice to work with. I wanted to use Graphql, but the Wordpress plugin that brings that functionality didn't bring a great developer experience. Their website was super-slow for the documentation, and it was difficult to add things to the schema.
Also; The endpoint isn't really fast, even though it's not a big problemen as i prerendered the pages, it doesn't affect performance. I revalidate the pages to update the pricing etc. But the biggest issue this brought was the build time, it are alot of products, and i wanted to prerender them so users wouldn't have to wait on not pre-rendered pages.
So for the next time i wouldn't be using Wordpress to be my headless cms. For the next time i would probably stick with my own Postgres database, with a custom admin panel to edit the products and fit the client needs.
2. Starting with a plan, not just dive deep in the coding right away
With this project i immediately went in the coding right away, without thinking smaller. This caused that the first version of the website could be more optimized in splitting up components, and logic.
This could be prevented by just creating a good plan, thinking out which components i would need, and creating those first. And, while coding, focussing more on re-usability of utils.
3. Was Tailwind CSS the right use case for this website? Probably not.
It was nice to work with Tailwind CSS, but i feel like the website got a Tailwind look. It could be more, custom. I would use it again for my Portfolio, but for this project, i don't think it was the right choice.
The repo of this project is currently private.