Ask HN: Solo Dev Stack of 2022?
Things I am looking for:
* The web/app one man show stack. What's the most reasonable way to get there, alone, assuming you start from scratch with now expectations about the tech you are going to use.
* Flexibility, initial dev speed and maintainability. I am looking for a stack that can work reasonably well for websites and apps, on the web + android + ios, or any subset of those. The less redundancy and additional parts to learn to make it all work, the better.
Things I am willing to give up:
* App speed and performance, specially on the client side. webviews are okay, if it eases the dev process.
* Matureness. I assume if something had already won in this space it would be apparent.
* Beginner-friendliness. I don't need any amount of no code, and I don't care if it's easy to pick up (but if it's not I do expect something tangible in return for my additional brain cells. I am not looking for something exotic, for the sake of being exotic. If there's two solutions that check all the other boxes equally, for this particular exercise, I am going to pick the one that's simpler.)
Things I am currently looking at include Flutter and Meteor, and maybe Rails with Hotwire (as soon as Strada is released). There's no need for all the required tech to fly under one name, but I'll probably grow increasingly suspicious the longer the list grows.
EDIT: If you take the time to respond, that's super cool, but if you are actually trying to answer the question, please be specific and point at the individual components.
82 comments
[ 2.9 ms ] story [ 164 ms ] threadStill looking for what the best database-as-a-service is though.
The combination of PlanetScale for the database & TypeScript Prisma for ORM is really a joy to work with.
I'm using it with React, but any frontend framework would work with it. It grew up along with Rails so there's some similar thinking, and you can choose which level of bare metal or magic that you want depending on what you're doing.
What's your point?
I prefer Unpoly, which I already know. Or inertia if I have to go full Js.
you basically have HTML++, very gentle learning curve, you can leverage your back-end (which is where you are going to add the most value) and just get on with it without a huge investment in front end architecture
i am the creator of htmx
if you are starting from zero knowledge of any server side technology and want a front-end/back-end integrated solution, rails + hotwire or laravel livewire will be better
But from my understanding, Unpoly manages to achieve almost the same thing that Turbo + turbo frames can do, plus some other extra goodies such as modals (now layers), forms validation, etc. I honestly like Unpoly a lot more, and it also works with any backend framework "as is", given it does not require any special behaviour from the backend. That's a big win in my opinion...learning a tool that can be used everywhere can't be a bad thing.
The only thing I miss in Unpoly, is something equivalent to Stimulus. You do have "compilers" which allow you to attach custom JavaScript to any Dom element, but everything you do there is pretty manual and imperative. For these use cases I also use Alpine.
Htmx is super-simple to get it work. Zero setup, literally.
I can't make work the simples thing on hotwire. In my mind, is like htmx=vue and hotwire=angular, ie: one is truly simple to use, integrate and is orthogonal to your current stack, the other is his own philosophy & world.
Not saying hotwire is bad, just that it like is part of a setup.
Htmx literally don't care about your server-side thing.
It is not so fashionable to talk about but everywhere I have worked since 2007 or so decade (consumer-oriented startups, enterprise-oriented startups, more staid organizations) has used either the JVM or .NET as a back end.
I tried once, with the idea of "one code base" but it ended up being two code bases without strong links (I was certainly doing it wrong)
Enterprise software, au least in my industry (large, well established high tech) is dreadful. It is so complex that everyone is scared of prodding it to much and obviously you wild not change the core web server. It is some tomcat anyway.
I am not a pro dev but work in information security (and develop for fun at home) but even to the untrained eye this does not look good.
Buy this: https://jumpstartrails.com/
Then also use either TailwindUI or Flowbite.
~$400 later, you probably saved 100+ hours of boilerplate setup, and you can pump out realtime web apps with a reliable tech stack and can fairly easily port to mobile with Turbo-iOS/Android.
You don't need to wait for Strada, they've said it's just going to be some additional helpers. You can build mobile apps now with Rails and Turbo.
While Strada isn’t fully released yet, it seems like it won’t require much additional effort to integrate! [1] the maturity is a plus, and having a feature-equivalent web app as a bonus is pretty sweet.
[1] https://news.ycombinator.com/item?id=33038485
I dont really like the Admin panel. It has performance issues when we have more than 100k rows of data (due to the limitation of Administrate). We had to customize it to make it run normally.
Admin panel gems in Rails world have bad UI with a lot of problems.
We need to get Tailwind and others to provide imba.io components. I feel weightless using your framework, but my design chops are still finger-painting level. I've attempted to 'be inspired by' these components and visually recreate them, but the time saved with having them premade would change life itself for me.
> Ask HN: Companies of one, what is your tech stack? - https://news.ycombinator.com/item?id=32960033
I was hoping someone would compile all the responses into a table or chart. Surprisingly, the top-voted comment is about WordPress.
If you're aiming for web + Android/iOS, I would say React and React Native with shared API(s). The backend could be external or custom built, most likely a combination, written in any preferred language like JavaScript, Go, etc.
I write backends with either a static server, AWS Lambda, Python aiohttp or Java with JAX-RS. The last two basically work like Sinatra. I have used Java at work since Java was in beta so I am comfortable with it and I have almost as much experience with Python. I have a lot of fun developing little applications for myself (a party controller for my music system, a workflow application for handling job applications, a similar system for constructing machine learning data sets.). Java though rules the roost in terms of being reliable under heavy load. I really have a lot of fun though with websockets in aiohttp.
For front end I have been using React, use MobX when appropriate, but I am thinking about how to transition to WebGL (maybe react-three-fiber) because I am inspired by video game interfaces, AR, and such.
I’d say that any shoestring project needs a lot of de-risking and you have to balance time spent learning and doing. If you are learning a language and framework that is radically different from what you know then you are going to do very little. Thus I’d tell people to stick with something they know if they like it. If you project is ambitious and time is limited you just add something new (like the WebGL stuff for me) only if it lets you do something that would otherwise be impossible.
Does anyone have experience with https://github.com/hotwired/turbo-ios or https://github.com/hotwired/turbo-android ?
(Nowadays I'd replace Turbo/Stimulus -> HTMX/Alpine)
Special thanks to Cory for his excellent guides on Django + JS: https://www.saaspegasus.com/guides/
Not surprisingly, this is also the stack I'd recommend for a solo developer, though I will also sprinkle in React as it makes sense (not as an SPA / decoupled app, but instead embedded in Django as I describe in the JS guides).
Also, I'm pretty agnostic on CSS. Tailwind is nice but I'd use it with a UIkit (Pegasus uses https://daisyui.com/) or TailwindUI. I also think Bootstrap, Material and Bulma are totally fine options if you aren't interested in laying out everything with your own flexes and grids.
Wat? This means the stack is dead last. You probably meant to say "it's second to none"
If you wanted to convey that something is so incredibly ahead of its rivals, you could say "this stack has no competition" or "this stack is in a league of its own"
At that point you’re free to decide how you want to run your client side, I tend to start with HTML and avoid JS until it’s necessary, then convert where relevant into React. As other posters have mentioned Tailwind is awesome for avoiding writing custom css, there’s a class for literally everything.
Clear separation between your API and your FE pays off down the line.
Additionally, I found Firebase to be a really great way to start and run projects. The most important piece of that is Firebase Auth which solves a complex and important problem without costing an arm and a leg. Other services such as Hosting, storage, and functions were really easy to start with.
Take a look at the node_modules directory for just the React app. It’s huge! Combined with the boilerplate of the other parts of the stack, the amount of code that the developer has no insight into is absurd.
I also recommend considering something like GraphQL for your API interface as it will reduce the amount of times you have to dip back into the back-end to add a single property to a response or write a new optimized endpoint for a particular view.
Front-end IMO it really depends on what you’re trying to build, React Native doesn’t really reduce your overall work IMO so much as the cognitive load. You still end up not only having a separate codebase from your web UI but also have to at times dip into xcode and angular studio to write some platform-specific code. I would probably explore Flutter if I really needed to write something once, but I can’t really comment on it today. For the stuff I work on I usually just try and make the web experience as mobile-friendly as it can be and leave it at that. For B2B customers that’s almost always sufficient anyway. I tend to work in Angular more often than React and have been pretty happy with the amount of reuse I get between projects and the quickness of the dev loop.
For database I use Datastore and for storage I use Cloud Storage.
Front end uses an express app that routes the marketing pages to static html pages and then routes everything starting /app to a generic html file that uses React to render everything / sort out routing.
It lets me use vue js as laravel views and pass data around without the need of an API. This just makes development super fast.
I went even further and used laravel jetstream, that comes with inertia js and with Auth and other useful stuff already solved
Good starter: https://github.com/graphile/starter
I can add a column the the db, and my frontend gets that autimagically (in dev mode, it generates a graphql schema out of the db, and from that it creates composables for my frontend wiht graphql-codegen). On the frontend I use Vue 3, the starter is build with nextjs/react.
Clojure for web stuff is fairly mature. Cross compilation between Clojure and Clojurescript allows you to write code that runs both on JVM and Browser. There are endless attempts at web frameworks for Clojure(script) to get you off the ground faster. My suggestion would be Luminus if you are not incredibly experienced with it.
Speaking from experience, the expressive nature of Clojure, as well as functional programming, lends itself to concise syntax, suitable for solo development.
You may find less mature tooling in Clojure land when it comes to mobile development. There is a react native library for Clojurescript called Krell though I can't speak to how well it works because I haven't used it before.
If you don't have experience with JS/JVM, you'll have a steeper learning curve as a lot of Clojure(script) libraries suffer from software rot (probably) requiring the use of Java or Javascript libraries via Clojure's interop feature. Interop works well, but you'd still need to be mindful of the host (JS/JVM) quirks like managing state and constructing objects.
You can get most of this from just using https://legendaryframework.org/
Want native apps? LiveView Native is a thing https://native.live/. One app to do it all.
I have been here before – and still confused. There is no actual... code repo? Is it hidden in the Slack channel or does it simply not exist yet?
EDIT: Okay, I guess it's just still very early into the Native stuff.