I’m beyond frustrated with modern web development. It feels hyper-inefficient when it could be completely streamlined.
We currently use massively scalable tools from the biggest companies on earth to solve even the most basic problems. We’ve got infinitely nested component with jumbles of state being passed every which way, a new build tool or framework or best practice every week, and then we have to constantly switch contexts between 12+ disparate technologies just to get an app online.
There should be a simpler way for product-focused founders who want to solve user problems instead of spending all their time debugging their monster stack and gluing things back together.
What about the concept of a “web app object”? A dynamic object that looks like an HTML node but contains all the web app capabilities you need across the stack collapsed into a single primitive.
Think of this:
It might look like a simple web component But, what if, unlike a web component, it worked across the stack.
It doesn’t have to be pre-defined with front-end JS, it determines its own namespace on the backend with its name, it gets new capabilities (both front-end and backend) just by adding a single attribute to it, and (this is the killer feature for me) it's place within the data in the database is determined by its relative position in the DOM (i.e. we’re converting web pages into nice front-end for our database).
Hello, world! Add Note⬆️ Here’s a fuller example.
This could tell an opinionated web app framework everything it needs to know about the structure the user’s data and the behavior of the page, including that notes are editable by users with edit access, the default text should be “Hello, world!”, and users can create new notes by clicking a button.
Browsers have nothing like this concept of a "web app object", even though web applications have been around for decades. Instead, we get a bunch of disconnected pieces of the stack we have to tie together ourselves.
We have the front-end (html + css), the backend of the front-end (build tools + our js framework of choice), the front-end of the backend (API layer + controller logic), the backend of the backend (database scheme + migrations + scaling), and then DevOps (pipelines + deployments + security).
It's like we have to know how to do our own plumbing just in order to take a drink of water…
I wrote out this idea in an HN thread and it seemed to resonate [0]. I also see other promising approaches to merging the front-end and the backend into one persistent object (Imba, Phoenix LiveView, Blitz, InertiaJS).
I’m working on the early stages of this idea as an open-source framework I've been developing in my spare time for the last few years [1]. I’ve been able to build a full proof-of-concept with some help from contributors.
It'd be excellent to get help with this project since it's something I believe in strongly and I'm a front-end developer with not a lot of experience on the backend. This is just something I personally really want.
[0] https://news.ycombinator.com/item?id=29053536 [1] remaketheweb.com