I’m beyond frustrated with modern web development. It feels hyper-inefficient when it could be streamlined.

We currently use tools built by the biggest companies on earth (whose main preoccupation is solving scalability problems) to build the most basic applications. We’ve got infinitely nested component with jumbles of state being passed around, new build tools and framework versions being released every week, and we're tasked with orchestrating 12+ disparate tools just to make a basic app work.

The context switching is getting painful and the rabbit holes seem to go on forever.

There should be a simpler way for product-focused founders (who want to solve user-facing problems instead of deep tech-stack problems) to build stuff that works.

I propose a solution: the concept of a “web app object." A dynamic object that looks like HTML but contains all the web app capabilities you need across the stack collapsed into a single node.

Think of this:

<my-note></my-note>

It might look like a simple web component. But, what if unlike a web components, it worked across the stack.

It shouldn't have to be pre-defined with front-end JS to have some basic functionality.

For example: it can determine its own namespace on the backend with its actual name, it can get new capabilities (on both the front-end and backend) just by adding a single attribute to it, and (this is the killer feature for me) its place within the data in the database can be determined by its relative position in the DOM (i.e. we convert a page's HTML into a live database that we can style with CSS).

<personal-notes>
<my-note editable>Hello, world!</my-note>
<create-new my-note>Add Note</create-new>
</personal-notes>

⬆ Here’s a more robust example.

This example code would be enough to tell an opinionated web app framework everything it needs to know about the structure of the user’s data and the behavior of the page, including that notes are editable by users with 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 apps have been around for decades. Instead, we get a bunch of disconnected pieces of the stack that we have to tie together ourselves...

We have the front-end (html + css), the backend of the front-end (build tools + our SPA framework of choice), the front-end of the backend (API layer + controller logic), the backend of the backend (business logic + database schema), and then DevOps (pipelines + deployments + security).

It's like we have to know how to do our own plumbing just to take a drink of water…

I wrote out this idea on HN a little while ago and it seemed to resonate [0]. I also see other promising approaches of merging the front-end and the backend into one primitive coming along (Imba, Phoenix LiveView, Blitz, InertiaJS).

I’m working on the early stages of this idea as an open-source framework [1].

I've been developing it in my spare time for the last few years and I've built a full proof-of-concept with some major help from contributors.

It'd be excellent to get some help from you all with this since it's something I believe in strongly and I think the world needs it. I'm a front-end developer and designer with not a lot of experience building a modern JS framework, so that's where I could use the most help.

[0] https://news.ycombinator.com/item?id=29053536
[1] https://remaketheweb.com