I have been exploring all of my ideas from the past. Breathing in life into past ideas and it is exhilarating. Let's talk about SaaS Apps or how larger apps in general suck and how I have an idea that could change this shit and increase developer velocity.
Also if you saw my Schemaless Hierarchical Database post before, the core is done! Benchmarked at sub-millisecond and mostly lower. It's faster than I expected!
I hate frameworks. The ones that try to do everything, prescribe ways to do things and evolve over time breaking things because they are so brittle as they try to do everything. Those are good for small projects, throw away projects. They are not good for evolvable products.
I like flexibility, but I also like patterns. I'd love for people to define a pattern, routine, etc. I'd like to be able to reuse what you did. I'm happy to give your library routine the data it needs to get the work done. I'd like to be able to change steps, inject steps to your prescribed pattern. I'd like to be to able to switch out third party services relatively quickly.
Payment processing has a prescribed pattern. Stripe for instance has a prescribed pattern, but that is a substep as part of payment processing. The idea of payment processing does not change the steps are fundamentally the same. End to end E-Commerce is from sign up, signin, checkout, payment, order confirmation and email. E-Commerce backends are built on top of many patterns. Some of it I don't want to think about too much honestly because it should be battle tested by now!
Sometimes, I just want to grab parts of other backends and use it in my own backend. Copy code and use it right? But that is vendored code and you have to maintain it now. Not ideal especially if that code has a vulnerability that you will never look into.
An ideal "workflow" engine or business logic engine would deliver flexible ways to stitch workflows together, libraries expect certain data for their pipelines that stem from application request data, so we need to scope data down for those pipelines, the general pipelines need to be able to return results so the route or whoever triggered it so they can return an error for instance, pipeline steps should be able to stop the workflow in case of errors or just stop in general.
My idea stems from an internal product, hope to release that prouct to the public ;), authentication has a prescribed set of steps, and some of those steps conditional. I came up with a way to make the authentication process more reusable so I could use any other auth provider if needed. Making sure a blocked user can't sign in is typically something you add to the auth system, but if a pipeline had a pre-session or post-auth step to check if the user is blocked before continuing to create a session then we could end the pipeline there.
I think I've finally settled on something that could really change the game here so we can end this game of rebuilding the same patterns over and over and finally allow the speed and flexibility I've always desired to build a SaaS backend quickly.
I'm aware of things like SaaSKit and what not, but give me a break these are just starter packs, these things would build on top of this workflow engine and prescribe you a set of libraries with their pipelines. This workflow engine is the core of your business/product processes.
I'll keep exploring this idea and make use of it then see about releasing it and doing a little bit of marketing to see what interest there is these days towards more maintainable software. AI code generation is grear, but you still have to maintain the code, ideally AI would learn this workflow engine and build pipelines, reuse, mutate pipelines to reach the end goal.
I may be able to deliver this core engine, finally. It'll be in Rust obviously, so that will limit the appeal. The core should be small enough to be done in multiple languages though.