ollerac
Joined 16 years ago
Joined 16 years ago
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
If you're curious or want to join in, I'm running a behind-the-scenes newsletter: https://31launches.com
And then the 2008 housing crisis happened. A massive betrayal by the government against its own people. Many people lost their houses, their retirement savings, and their investments. And who did the government bail out and prop up? The bankers, the elite, and the stock market. And this happens over and over again in countless banana republics across the world — the elite propping up the systems that support themselves and not really caring about anyone else.
So now, you have this massive movement against wall street (r/wallstreetbets & GME/AMC), the elite (Trumpism), centralized financial institutions (Bitcoin & DeFi), and the upper class of tech workers (web3). And you wonder why? People were promised a path towards wealth and have had it stolen away from them countless times. Now they are rebelling.
It doesn't matter if — technically & logically — Bitcoin, DeFi, and Web 3 aren't everything they're promising to be... People still need a place to turn to put their hopes that isn't the current system. They've just been burned too many times by it.
But none of this is going to work out in the long run... It'll be just like every other mania throughout history. Tons of investment, tons of apparent growth fueled by FOMO, and then a massive collapse when people realize no one actually cares about this stuff for its intrinsic value... But enough effort & pain & money will have gone into it by then that it will have created a nascent industry that will maybe, one day 10-20 years from now, take over the world and become the new normal.
TLDR: DeFi & Web 3 is an emotional reaction to a system that just doesn't work for most people, not the logical next step towards a better version of the status quo.
I'm interested in what's worked better for you and why you think no-code is a bad choice.
Hear me out.
The #1 problem you have as developers is marketing.
The #2 problem you have is validating demand from customers.
So force yourself to do the uncomfortable steps ASAP, while also making it easy to pivot by launching with the smallest possible stack.
If you can launch with something like Airtable + Webflow + Zapier + Typeform, you can get something out there in weeks instead of months/years. It will be relatively easy since your team is technical.
Then release it to the market and see if it sticks.
The power of a lightweight stack is NOT the ability to find Product-Market fit instantly.
The true power comes from making the 20-30 iterations it will take to actually find Product-Market fit less painful than if you had to rebuild from scratch every time you had a new idea.
I think it's absurd that I can set a div to a specific width (100px, 200px, whatever) and the padding or border will make the div larger than that width.
It makes it so hard to think about designing a page when you have to continuously add together padding, margin, and border with the width to get the actual width.
You're right about flexbox and grid solving most of these issues -- and responsive design has pretty much done away with using exact pixel widths for anything, but I still run into some cases (especially around creating grid layouts that automatically reflow) where CSS columns and floats are the best approach (not often, but it still happens...) and then you need to rely on the width being the actual width, you know?
I'm wondering why nothing simpler/more automatic has popped up.
I would think with improvements in tech, things would actually become simpler.
Elements that know they're user-editable (images with upload controls attached to them to replace the image that's there, dates that trigger calendar controls when clicked, and inline editing for other elements that actually works and is consistent across browsers).
An offline database in the browser that has the concept of user accounts and resetting passwords baked in, as well as subscription payments, and has a universal API that can be automatically deployed to any hosting platform.
All of this would make building web apps and games trivial for so many more people -- write some basic HTML, upload it to one of a million platforms of your choice with a click, and you have a testing ground for a product that can grow.
It would be a way for anyone on the internet to build something useful and get it out there without learning a thousand technologies with a thousand nuances.
It's amazing how much work you can skip when you treat the front-end of your app as a pretty interface for your database. I think a lot devs were inspired to go down this road by Meteor.js back in 2012 when it was released [1].
I think a tool like this is the future of web development: create the interface and boom, you're app is already working. That kind of instant validation of your work is addictive.
The problems arise when you want to change how data is processed behind the scenes before displaying it or after the user edits it. Or how it's connected to other users' data. But I think these issues can be solved either with reactive hooks or some of the innovations coming out of the GraphQL space.
I think you can get pretty far with a system like this:
* User accounts
* Automatic data syncing
* Collaboration
* Deployment & hosting
* Payments
* Form submissions
All of this is pretty trivial to get working out-of-the-box with very little effort from a dev. So no one has to reinvent the wheel.And these features, if done well, are all that 90% of businesses need to create value for their customers and become profitable.
I'm really excited about this space. My email is in my profile if anyone wants to talk about it further.
Web app dev has started focusing on single, separate, reusable components instead of trying to design everything on the page at once.
Often, in these components, the HTML, CSS, and JS is still separated, but now (theoretically) you can plug that component in anywhere (even a different app) and, as long as you feed it the right data, it should just work.
I would like to change my username on HN to panphora
Email: [email protected] Twitter: @panphora