A reflection on the https://softwareengineeringboss.com/ platform.
The frontend was super easy.
The backend was super hard. Tech isn't ready.
The platform is coming offline. Going to use Gumroad instead.
Later, when I get the tech working for me instead of against me, I'll revisit serverless functions.
The frontend was built with Gatsby, React, and Styled Components. BDD with Cypress and Cucumber folded in very nicely. Even though I have around 50 components, everything was easy and straightforward to build. I could have had hundreds of components and everything would remain well organized and easy to change, i.e. scalable.
The backend, on the other hand, is composed of just 3 simple functions. One to create a stripe checkout session, one to receive a webhook from Stripe when the customer buys a course, and one to give the user access to all the courses he has purchased. Albeit simple, building these 3 functions was an absolute pain.
They can only be accessed by logged-in users and they need access to SSM secrets to access Stripe's API. Amplify does not offer us a way to get this context locally for local testing and it doesn't allow us to upload the functions and test them in the cloud quickly either. The cycle time for "change and test" with Amplify was about 8 minutes, which makes development extremely slow.
I've tested serverless and they do provide a way to quickly upload and invoke a function in the cloud while getting the logs in real-time, which is great. I think Amplify should adopt this. But the trouble with serverless is that it also forces us to learn all the low-level complexity of CloudFormation templates, which defeats the purpose of using such a framework.
So, because serverless functions remain hard to develop, and I want to roll out these courses sooner rather than later, I will pivot.
I will focus on getting the courses out and use Gumroad as my platform. And when I find a way to implement BDD and short dev cycles for serverless functions, I will revisit them.
PS: I've considered a full-blown express server, but the costs of development and the server don't justify it. I might as well use Gumroad for now and jump to serverless later.