Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: What is the most productive stack or lang for single devs ?
33 points by arromatic 6 months ago | hide | past | favorite | 62 comments
What is the best language / framework / stack that you can do work most or fast or most productive for a single developer . Python with django/flask , Ruby on Rails with ruby , rust with some frame work , Node js or something else. preferably with a easier learning curve .

Scenarios : 1. Webapps

2. Simple Website

3. Simple social media




Ruby on Rails has recently started actively marketing itself as the solo developer framework. I've worked with it for a long time now (among a bunch of other languages and frameworks) and I have to say the recent updates to the frontend 'story' are really compelling for a solo dev.

One of the compelling reasons to write JS on the server was to have the same language and ecosystem in the client and server, and things like Turbo for Rails really go a long way towards delivering on that for Ruby (although of course you still need to understand javascript and browsers.)

That said, if you're already familiar with something else, then pick the most mature batteries-included framework in that language. Languages are just a tool for the job, it's incredibly unlikely as a solo dev that you can pick a "wrong" one.


It's not about picking the wrong one . What i am trying to know is which one can be most productive in short : doing most in less.


That's a very difficult question to answer without carrying out a proper study.

Languages, libraries and frameworks constantly evolving so it's a moving target too.

I think most people will just recommend the stack they know best unless you have more specific criteria.

Again, I don't think you can go wrong with Rails for web apps as a solo dev.

You get a lot of utility out of the box with Rails and you can also easily remove things you know you won't need.

e.g. Little utilities like Array#to_sentence[1] might not seem important at first but they're real time savers when you're working on your own to get something out the door.

1. https://api.rubyonrails.org/classes/Array.html#method-i-to_s...


If you don't already know a language and its ecosystem, then I'd recommend Rails. It is simply the most mature and batteries-included framework. Ignore the claims that it is dead - if you're a solo developer the specific jobs market doesn't matter.


What is the recommended way to deploy it without Heroku?


When I work on solo projects, my goto is what I've dubbed the HAG stack:

  - HTMX: For client/server interactions. Returning HTML fragments is easy and lightweight.
  - AlpineJs: For interactivity that doesn't require a http request, think toggling sidebars etc...
  - Go: Primary development language, simplistic and easy to get started with. Fast compilation and with embedded files I can ship a single binary for deployment that contains all required assets.
Tertiary and other tools/services I use:

  - Turso (Sqlite): Primary datastore, great to use for a "db per user/tenant" approach."
  - Redis: Sometimes I use redis over turso, depending on need. Also used for caching. I've been moving much more into Turso though, especially with the embedded replica's.
  - Docker: Everything is built into docker images. For my Go app I disable CGO and use Google's "distroless" container images as the base image.
  - Fly.io: Hosting everything.


Variation: swap Django for Go for the "batteries included", especially admin interface.

Maybe swap HTMX for Unpoly which is more polished IMO.


+1 for Unpoly.


I was checking out HTMX the other day but I am not really convinced. There's a lot I like about using HTML to define API calls, but I want to keep the backend free of unnecessary burden (and therefore free of frontend related rendering tasks).

I'm looking for something like HTMX in its methodology, which uses HTML attributes for defining API calls and where the data comes from without having to write additional glue code in JS... but which uses OpenAPI as a schema for serialization/deserialization of data to/from the API endpoints.

Maybe something like that exists which I couldn't find with my Google Fu?


Too each their own, that's the great thing with programming, you can find what you like/want and use that. As you can probably tell I don't feel it is a burden on the backend. I subscribe to the thought that state is managed on the backend, and the browser is just the users client to view those hypermedia responses provided by the server. Template fragments in Go make it easy to only serve the necessary HTML from my templates, or if it's a full page request I can send the entire page.

I'm not sure of anything like what you described, good luck on the search for it. If you find/develop anything ensure you post an obscene amount of memes on twitter for optimal discoverability by tech influencers.


Returning JSON instead of HTML is just the same. And you can still go back to JSON some interactive UI (Maps, RT Chats,…) but if the UI seldom updates and mostly on navigation, it’s great. I’m currently using Laravel and livewire for a project and not worrying about frontend state is nice. and if you worry about scaling, you can make the web service stateless, moving everything to the DB and external services (logs, caching?, jobs queue).


This is with server side rendering, right? What do you use to "secure" go?

I'm familiar with go, but I always write JSON apis with it, not SSR.

In rails protect from forgery ensures csrf token is put in there to ensure security and authentication is provided by devise, or omniauth or the framework, but if I wanted to roll my own the framework provides tools to safely compare password hashes to avoid timing attacks. Is there anything similar for Go? I'd love to write my next project with that instead of Rails.

Ideally, I also need an "admin UI" of some sort (activeadmin in rails)


1. Web apps - Ruby on Rails hands down, every time. with SQL lite works pretty good on smaller projects. this is if you're working on a project yourself or have a very small team. If you're doing full stack and if you're doing turbo/stimulus it's a bit harder to hire people that have all of that. In my experience, easiest to hire full stack devs are with node/react stack. Coincidentally that's the group of people with largest knowledge gap in the either stack, people tend to specialize in one

Not sure about 2 and 3, not my cuppa tea


I think .NET has gotten, or rather failed to shake off, a reputation as slow and Windows-only.

It's very powerful, the tooling is free and best-in-class, self hosting on a cheap Linux VPS is trivial and the framework itself includes almost any functionality you could wish for with installing random packages.


I agree to all that.


I think it is very, very hard to beat Python+Django. As long as you're willing to conform to the "Django mindset" and the boilerplate it requires you can get simple websites up and running in no time. You also get so much "for free" that most other frameworks does not provide you with. The only major drawback is that Django is not great if you really want to do things your way.


Rails is by far the best time saving all-in-one tool.

Nextjs for example don’t come even close - you can easily waste a month just properly setting up your monorepo with all necessary bells and whistles.

With this come also the scaling pains and downsides, which might only be relevant to a tiny percentage of solopreneurs.


PHP, Yii2 Framework, Nginx.

Productive out of the box, comes with bootstrap 5, jQuery( yeah i know).

It's has amazing documentation easy to learn. It uses PHP for templating, so you can prototype very quickly.

Collection of wisdom:

- A single dev will be more productive with a mature framework 10+ years, most of it has been documented, bugs fixed, tooling matured. Old is tried and true

- JavaScript libraries rot very quickly. Try running any node project from 2 years ago? Now try running any PHP, Django project from 15 years ago see the difference.

-C# and .Net is amazing

-Sqlite is amazing

- I was an angular/react dev for many years, now I'm pumping server side html templates and jQuery like there's no tomorrow. It's so easy, so simple. Why push json on the backend, then another project to consume/validate that JSON on the front-end, when I can just push everything as HTML.

- It's not just easy to develop, it's also ease of deployment.


Nothing wrong with jQuery, version 4 is very modernized.


I think there's a good argument for Elixir and Phoenix. It's shocking how easy it is to do just about anything with it. An excellent database wrapper, incredible async story, beautiful at real time. You can substitute in a JS SPA framework if you need to, but I think you can go really far with LiveView before that's a requirement.


Flask + Svelte is very accessible. When my Middle School students wanted to "build an app" I would roll up a boilerplate with Flask, Svelte, and SQLite on Replit (would not recommend anymore - Replit has jumped the shark) and they were able to become very productive very quickly.

EDIT: this was after 1-2 months of intro Python and JavaScript, so they weren't going in blind but also didn't have to learn, say, React. If you know some Python, you can use Flask. If you know some JS, you can use Svelte.


I'd say just go with SvelteKit, then only a single language is needed (plus html and css). The downside being they'll not really gain a firm understanding of the front and backend split.


Productivity can mean speed, or it can mean reassurance that code will be easy to understand and refactor in the future (which compounds speed).

The past few months I’ve been working heavily with Python type hints and pydantic which makes it bearable.

Golang is strongly typed but it’s difficult to transform data handily with one-liners.

I’ve used Java and Spring but it’s very verbose

In my experience, TypeScript and its ecosystem has been very productive. It runs on backend and frontend, and the type system is very expressive. I always reach for it first.


LAMP (or LEMP) stack, hosted on a single VM (probably Digital Ocean).

You probably want to use a framework of sorts. Laravel or Symfony are good. Not mandatory though.

Server side rendering to start off with. Bulma for CSS. Alpine for JS.

Throw in some cronjobs for scheduled stuff.

Maybe a bit of Redis for sessions and caching.


Absent any other info, for a "single developer in 2024": Python and Django. Reason: You're statistically the most likely to know Python at least a little bit.

In general the selection algorithm for results-driven development is: First, go with whatever web framework you're most comfortable with. If you don't have any, go with whatever the most popular framework is, in the programming language you're most familiar with.

The reason this works well is because your question is ill-formed. In general, I haven't seen any hard evidence that Django vs. Rails vs. Laravel vs. Node vs. (etc.)-based projects have big variations in lead time to new features, lead time to bug fixes, etc. Your knowledge of the underlying PL, framework, and their quirks dwarfs any technical advantage they might have over one another.

(For the sake of completeness: If you don't know any programming languages, go with whatever the most popular language is. How do you know what's popular? Intuition! Most people's brains will answer "Python" or maybe "JavaScript" to that question, and those are both great choices. If you're the kind of weirdo who says "Ruby" or "PHP" or "Scheme", you might as well roll with it, because that answer comes from a part of you which is constantly noticing the trends in its local environment, and it probably has a lot more logic than you would expect.)


The framework that you already know how to use


Haven't picked any specific one for full time learning. Thats why i am asking.


In that case, and since you are looking for suggestion on where you can do work most or fast or most productive for a single developer, you could consider an alternative to learning a framework.

Learn a platform. Not a framework.

You could pick at platform to specialize on and learn whatever framework / language you can use to extend that platform.

For example you will be very productive very fast if you pick a platform like Microsoft Power Apps[1]. Although it is a no/low code platform there are tons of places to write code especially when you start to leverage azure functions. (c#/javascript/phyton/java) There are alternatives to Power Apps but that's the platform I am familiar with.

I know its fun to build apps from scratch but if you want to be productive fast you can cut a huge corner by building on top of an existing app platform.

[1] What is Power Apps? https://learn.microsoft.com/en-us/power-apps/powerapps-overv...


What are some other platforms excluding power apps ? And is there any foss alternative ?


For foss alternatives you should look at elastic stack [1].

If you aren't familiar with elastic stack don't let it put you off that they mark it as search product [2]. It has a tons of integrations [3] [4] allowing you to connect with almost anything and write code against it using any framework. Elastic is awesome.

Elastic Stack is much more code heavy than an low code platform but you get tons of features out of the box.

In the eyes of you app elastic is just an API that provides access to your data. When evaluating elastic try to abstract from that it is a search engine. Try to think of it as just a mechanism to access and work with data. Instead of firing a sql query against a database to get your data, you execute a search query.

From that build app app just like any other data drive app using whatever framework or language you prefer.

[1] https://www.elastic.co/elastic-stack/

[2] Elastic Search is the search component in the elastic platform. Elastic Stack is the platform.

[3] https://www.elastic.co/integrations

[3] https://www.elastic.co/integrations/data-integrations



Supabase as a backend and any framework they support on the front. They do the auth, database, API, pub/sub, and you can use postgres' built in security features. Then you can use their 2 levels of server side functions if you need it - postgres functions or their deno lambda functions.

I've really enjoyed it for any play projects, they give you so much out of the box, and you can run the stack locally on docker.


Well, back when I was single, Ruby was definitely the answer. Now that I'm married I would still try it, or some or the JS frameworks backed by the big companies and still alive. I don't think my wife would mind me using Ruby.


As always with these things it really depends on what you're trying to do and what your skill level / background is.

Personally I find PHP + Laravel is great for throwing together a simple website. The amount functionality Laravel provides out of the box is incredible and so long as you're not doing anything too crazy you'll find most of the heavy lifting has been taken of for you.

If you need to use a modern frontend JS framework on your frontend then I'd probably go with React (or Vue) with a Node/Express API. I'm not a huge fan of using Node on the backend for professional projects be honest, but if you're a single developer I think there are benefits to using a single language on both your frontend and backend. I've tried using Vue with Laravel before, but I didn't like constant context switching between languages.

I've not got much experience with Ruby on Rails but I've heard good things about it and I suspect that would great option if you have familiarity with Ruby. I'm not sure if Rust would be the most productive choice?

If you're just getting into web development I'd go with Laravel personally. I wouldn't complicate things just yet with adding modern frontend frameworks like React into the mix.


I'm using dart/flutter. They don't get a lot of love on HN, but for speed of development and experimentation they're excellent (hot reload being extremely useful), plus they're cross platform meaning you can decide whether you want a webapp or target mobile (android and iOS) or the three main desktops. I've enjoyed learning and using them.


Cloudflare Workers, raw html/css/js (maybe TS). Can use a different "pages" provider like Netlify. It's very freeing. Especially Cloudflare, where the server side APIs are very similar to client side service worker APIs. The "low level" browser APIs can do a lot, you might be surprised. And you won't have any dependencies to update 2 years later.


Some would say Laravel and I can agree, it's such a powerful web framework to build quick. Personally I'm at the most productive state when working with Next.js + TailwindCSS & Prisma. Additionally I also use a UI library called DaisyUI that is built on top of TailwindCSS.


It depends what kind of UI you want.

To just get a functional website, the backend frameworks are just way more productive than having to mess around with a frontend/backend solution, so rails, django, elixir, etc all excel, are cohesive, have tons of support and libraries to cover different needs, etc, and generally not too difficult to learn.

Though personally I found rails' magical 'convention over config' to be an abysmal hindrance to learning how things actually work - for example many examples show code, without showing where in the filesystem the code should go - you're expected to know the convention already, and things like i18n translation 'paths' can be confusing, and fail silently.


I've pumped out many web apps using Svelte(Kit). I find it very good for rapid prototyping and exploratory programming. For example, I wrote a beat-aware video player in an afternoon or two (while I was learning Svelte).

Even if you are a single dev, you will probably find yourself interacting with other members of the community. (Maybe more so for a single dev?) I find the Svelte community quite responsive and helpful.

SvelteKit can handle both client and server parts. It streamlines a lot of the stuff most web apps need like routing. However, it doesn't include some other common stuff like auth and persistence to a database.

https://kit.svelte.dev/


+1 to Sveltekit. It’s a secret weapon for solo devs. I like to pair it with Pocketbase, Supabase, or Cloudflare KV.


Yes~ I've considered using https://pockethost.io/ (hosted Pocketbase) for the things that Kit doesn't provide (like DB and auth).


I've been doing mostly solo for +25 years and now consider Rust + tailwindcss + htmx + Postgres the best overall. Before I could have said Django, then before Delphi, then before FoxPro.

One thing that is important in your calculations is how long-term is your outlook. What is nice to do in one week is a huge drag doing 2 years.

The more involved the logic or the more you are doing the project, the more paid to have a strict stack that solves the harder problem in the most correct way possible.

ie: js + nosql + schemaless and stuff like that, that sound simple will give negative productivity after a certain size and time on the codebase...


Wow. FoxPro. Good times! I’ve never found anything as productive since Visual FoxPro.


yeah my dream is to revive that spirit with https://tablam.org


If you are asking for the most general-purpose technology around right now, I would say Dart/Flutter.

Dart is a half-decent language, able to be used without excessive pain for mobile, desktop, web and backend development. It compiles to Javascript and WASM, as well as native code. And web can be either traditional HTML or a recreation of your mobile/desktop UI.

It’s a really healthy community with strong leadership and wide participation.

You’ll need SQL, but otherwise, you can build any kind of app with Dart and Flutter with reasonably fluidity.


People are going to hate me for this, but I'm going to say it anyway: WordPress.

Need social media? BuddyPress plugin. Need a webshop? WooCommerce plugin. Need a cheap mailing list? Mailman plugin. Need a forum? BBPress. Anything you can think of? Plugin.

I needed something fast for my own website https://rpgplayground.com, and took this road. Best decision I ever made. Every time I needed new functionality: ah, there is a plugin for that!


Yes but they wanted to make "webapps". Maybe some people use wordpress for single page apps? Not sure how that is done or why anyone would try!


Kotlin is like a Rust with garbage collection. It has a bunch of good ergonomics, safety features and modernity, and the 2.0 release is just about to happen.

You can use Kotlin as a mobile frontend language as well, it's especially good on Android. And there are both JS and wasm outputs available.


Keep in mind that the average replier here is an older developer whos skillset has come from the 2008-2018 generation (Rails, Django) and have rarely ventured elsewhere. Or when they have they blame the learning curve on the tool not themselves.

To me it seems like your very early on your journey and haven't ever learned a web framework or become proficient in at least one language.

So if I was to give you a blanket recommendation: Javascript or Typescript.

From there you can start on the frontend side and work your way to a backend (Nextjs is a good candidate here)

or do the reverse and go back to front and start with Express

The reason im recommending this is

- Youll have to learn javascript anyway

- It has tons and tons of support (libraries, tutorials, docs)

- You can also venture into mobile app development if thats interesting.

- Once you get the hang of it I believe its faster to spin up projects than rails or django

This is coming from someone who has worked professionally in *a lot* of stacks

- Ruby / Rails / Angular

- Python / Django / jQuery

- C# / .net / knockout.js

- Javascript / Express / React Native

- Elixir / Phoenix / React

- Hasura / Nextjs

- Go / Nextjs

- Java / Spring

- Haskell / Elm

Aside: if you want to know my favourite stack, BE It's Elixir / Phoenix by a large margin. FE im just more productive in React/Nextjs but Remix seems cool.


Ruby on Rails + kamal for deployment


JavaScript all the way - you'll probably need it one way or another.

So why not go with the one language that works on the backend, frontend, data processing, scrapping? Getting to a pro level in multiple languages is more difficult than mastering just one.


If you are doing webapps, JS all the way. Although don't overlook the benefit of static html/css for a lot of things, at which point Python becomes very worth it because of its integration into other things is a bit better than JS.


For me, Clojure with Clojurescript and Datomic.

For webapps Fulcro is a great framework, though it has a steeplearning curve.


Cheapest solution is still LAMP on DigitalOcean box. But instead of MySQL use SQLite.

Add more performance? No framework, roll your own.


There's no right answer, unfortunately, but the one I'll give is React, Node.js, and Express for consistency.


Most comments are just posting their favourites without reading your question imo.

Simplest and most productive without a step learning curve. Nodejs, javascript. Lots of resources to learn from, questions answered, basic approaches, lots of libraries, easy to troubleshoot, closest to the web stack.


.NET is solid, you can even use C# on the front-end using Blazor


Making things is the most productive stack. Your experience is the only way to know what works for you and to know what doesn't work for you. It is the only way to know what you are actually interested in doing versus what you are interested in thinking about doing . What I mean is, you could have started building a simple website with Notepad instead of asking a question. It would probably have been hard and not very good. Asking the question was not and turned out ok.

Anyway, HTML and Javascript is the simplest thing that might work. HTML and javascript are the fundamental abstractions of web development. Not knowing them is an "illiteracy."

Getting anything up and running will still require a lot of workflow discovery. When you have experience in a workflow you can make informed decisions about your particular needs.

https://wiki.c2.com/?PrematureOptimization

Good luck.


the most productive stack is the one you know the best.

mine: python + fastapi + vanilla html / js


Common lisp


Might as well roll your own TLS stack while you’re at it!


Whatever you know is the best.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: