TLDR; wow, this ended up being a much longer post than I thought! Jump to the second to last paragraph to ready what I'm building.
Today I've committed to myself to release something in a month: May 31st.
This is my first "build in public" post, and it's feeling very vulnerable. I'm mentally preparing myself to face criticism/negative feedback, and trying to not think that "someone will steal my idea". Hopefully the benefits (feedback, support, first customers?) will outweigh any negatives. I'm going to aim for full transparency so as to get maximum value. Here we go.
I currently work as a freelance developer. I'm lucky to have in-demand/rare skills (Ruby on Rails, mostly backend), which allow me to command a high hourly rate. I work a total of 10 hours a week to cover my bills. Next to that I've hired a NodeJS freelance dev for 20 hours a week at half my rate, so I work an extra 10 hours to pay for him. I'm left with 20 hours a week + evenings and weekends (I have a pretty limited social life) to work on my own apps. One of them is Sponsorstack.io, which I'm working on in collaboration with another Ben. The rest is a series of ideas that have seen various degrees of progress, but never the light of day.
The one I've put most energy into lately, and am most passionate about, is yet unnamed. It came about from my frustration while building another idea. I had full specs and designs and was shopping around to outsource the development, in hopes to speed it up and do it better than I would. However it didn't sit well with me when most quotes ended up around $20k and 3 months of work. The features were nothing fancy; all pretty standard for modern apps.
So I started looking into no-code builders. Bubble is the one I spent most time with because it's not limited to mobile apps. However, as a developer, I soon felt limited and annoyed by the UI. I also gave Webflow and a bunch others a try. No go. Most of these, for good reason, feel like they were built for non-developers. Designers mostly. The complete opposite of my use case, since I don't particularly enjoy designing front-ends.
Later I came across other site builders that better fit my style, like Unicorn. I like the no-design, drag-and-drop approach, but it's very limited in scope for now; only landing pages. I also tried DivJoy, which is a great starting point but only scratching the surface of possibilities. I looked into boilerplates, UI/component kits... all great but not addressing the problem as a whole. I want to make it possible to build full-featured apps faster; nothing new there. But like, much faster: 10x less time, for 10x cheaper. 9 days instead of 90, $2k instead of $20k.
The key hypothesis I'm building this around is that 80% of modern app features are the same across the web. We don't build features in isolation. We see something we like on a site and replicate it. We import modules. We copy/paste code from a tutorial, StackOverflow or a Codesandbox. We just keep reinventing the wheel for our own benefit, because there's nowhere to buy an affordable ready-made wheel that allows for the remaining 20% customization we need. Worst of all, we tend to build a new wheel for every new project.
Originally I thought that a more complex version of Unicorn was the solution. Write a bunch of components that can be drag-and-dropped into a UI, not limited to headers and footers, but also including dynamic content lists, forms, checkout flows, chat interfaces... After going down that path for a little bit, I realized my approach didn't allow for the customization I wanted. That would require rebuilding Bubble, which of course is neither possible nor my goal. So I should allow for code to be exported then? That's essentially DivJoy, and my issue with that is that, once the code is exported, you can't really go back and make tweaks or add features. So I wanted something in between, which wasn't a component kit.
Component kits are great, but in a way they're too granular. When we're building never-seen-before features, they're perfect. But when we're just making another login popup? Getting code for the entire popup would be more productive. And the thing is, the popup is only the tip of the iceberg when it comes to logging in. We need a backend, code to communicate with the backend, a way to keep state, handling of routes that require authentication, and more... which component kits don't provide.
In my search for the perfect component I came across bit.dev. I had seen it before, as a good number of their tutorials rank high in search, but never paid close attention to it, until now. They've built an infrastructure for easy component reuse within and across organizations. Kind of like NPM, but easier to publish packages, and most of all the ability to customize the imported code. The code you import doesn't live in a read-only directory; it goes into your src folder, so you can edit it and commit it. And with that you can still receive and merge updates from each package. This felt like the perfect system to rely on to share complex components.
If you're still reading, thank you! We finally got to the description of what I think I should build as of today. It's a premium component marketplace, with components ranging in complexity, from a simple button to an entire auth system. It would be backed by bit.dev and use some sort of CLI or code editor integration to easily fetch new packages and keep existing ones up to date. It might need to rely on a framework or some hard architecture rules to ensure interoperability and minimize NPM dependencies.
I embarked on this whole journey November last year, and 6 months later I'm feeling like I need something to happen, hence my commitment to releasing in a month. I hope this post somehow helps me create forward momentum.
Please let me know your thoughts in the comments! And again, thanks for reading.