blog

Webiny

While exploring options for my side-project stack, I decided to give Webiny a chance. On paper, it seemed to have everything I need and even more. CMS page builder to build out my app frontend, leveraging AWS but handling all of the setup and deployment for me. GUI for creating APIs and integration with Algolia for search. The only thing missing out of the box was login/auth. I wasn’t too crazy about GraphQL and TypeScript but figured I can work around that. It pitched more than enough to make me wanna explore it so I opened their very nice docs and started installation.

First, I had to install yarn and create AWS account since I didn’t have either of those. That was a bit tedious but now that I have it, I’m sure it will come in handy. Then I ran the install script and got a big ol’ monolith on my machine. Now my problems begin.

I had to deploy to AWS. On the first attempt, my terminal disconnected for some reason and I had to restart. Second attempt and deploy script told me something about failed deploy and pushed me into the world of Pulumi which I knew nothing about.

I tried few commands in an attempt to export/import as the console message suggested, but nothing worked and I couldn’t make sense out of it. Eventually, I deleted .pulumi folder and tried deployment from scratch. This means all partially deployed stuff on AWS stayed there as junk but at the moment I didn’t care.

On the second go, long deployment of the API project finished successfully but when the process moved to the app, the console started throwing an infinite stream of weird errors. Errors weren’t helpful as they looked like stack traces that pointed to some Amazon service and my terminal was unresponsive.

At that point, I decided to call it quits on Webiny. I lost around an hour just trying to get to "Hello world" and failed and that was enough for me to pivot.

In this case, Pulumi caused the most friction for me. It was a service that I never heard of and know nothing about but seemed like an integral part of their stack. I just didn’t wanna risk a chance to end up deep in GitHub issues every time my deployment fails.