On the front end side of things, I feel that React is not the default framework as Svelte and HTMX are everywhere (or maybe I am reading too much Twitter). On the backend side, I think it is a bit more open and has to vary from project to project based on specific needs but would love to hear what you are using and why anyway.
For many, I realize the answer may be to use the tools you are most comfortable with but wanted to ask just to see.
In my bubble, Angular and React are the primary frontend frameworks, with Vue sometimes being ahead and sometimes behind either. Virtually no one uses Svelte in my circles., but most folks have heard of it or have applied it in their side projects. HTMX is even more niche, still up for discovery for most folks, don’t know it well enough to comment. I prefer Vue and Angular DX but I favor React component libraries, it’s complicated. My absolute favorite is PureScript with React.
In most cases, backend is Spring on Java for well-defined or rather systematically approached applications, and Python or TypeScript for something that can run on AWS Lambdas and a junior dev might become responsible for. I think .NET is a no less decent choice for that matter. Go for rather small applications that need to touch on layers beneath the application layer, not the best choice to express complex business logic. I personally just pick the JVM stack with Kotlin and Spring, and deploy to AWS.
Rust is too unstable for long-term maintenance but deserves to be respected, I try to push Rust (though I’ve spent most of my time in C++) for smoother collaboration and simpler code review—there’s little I ever need to check after the Rust compiler—mostly the business logic and some axioms, in addition this raises the bar for quality contributions. Having to deal with low-key merges after the fact, sometimes even circumventing CI, is not pleasant at all.
Therefore, having the source of QA truth in the compiler is a boon to my productivity, hope it manages to obviate even more test suites, lifting more of the business logic into the type system, the way you can do it in Haskell or, even more powerful, Idris, but that’s a bit off-topic. Yet that’s what I choose if I need correctness.
My preferred stack is server rendered go. I’ve traditionally used pongo2 for templates since they are nicer than standard go templates imo. But I’ll be trying out templ on my next project.
But whether you use go, Django, rails, laravel, whatever, if you’re doing traditional server rendering rather than the SPA or modern “full stack” framework, you’ll have a better time. And this is coming from someone who actually likes using SPA frameworks for interactivity. But managing client and server side state is so much more complex.
For more context, I’m essentially revisiting an app I built from 2015-2017, before I became employed in the industry. I built it with Django and Ember. Long story short, Django upgrades nicely, while anything requiring Node that was built that long ago is “lost in time, like tears in rain…”
Yes, I’m resentful. And yes, I hope I never have to touch Node/NPM again.
Some other great options are Elixir/Phoenix/LiveView (I used it at my most recent job, and loved it) and Ruby/Rails/Hotwire. Hotwire is not coupled tightly with Rails, but using it with Rails would be the path of least resistance.
Personally, I went back to Django for reasons including:
- Data modeling and migrations with Django’s ORM are top-notch.
- Auth and admin which come out of the box are key for getting to an MVP quickly.
- I find Django’s template language more intuitive and more elegant than erb and EEx/HEEx.
- Python is still king in the data world, so it’s easy to integrate with mature DS/ML/AI libraries.
- If I need to find talent, Python devs are everywhere.
Who cares if it’s not the latest some hipster is pushing on Twitter? Most of the time these people aren’t even serious (in what they’re doing).
Focus on solving your customers problems.
For hobbies it’s free for all. Do whatever you like. It’s fine to be emotionally tied to some library or obscure thing. It’s for fun after all.
For anything serious, it’s good to be serious.
Maybe the trendiest thing will become that some day but don’t tank your own business in the process. Remember that Meta invested heavily in react not for fun but because they are a serious multi billion dollar business (key word).
For actual work, I've got one in sqlite / flask / htmx, and another in tensorflowjs + react + tanstack + firebase. I'm having opinions about the latter- a recent meeting started with me putting the url for the home page into a browser and then counting out loud until enough of the serverless stuff spun up for the interface to load. I got to 24, which was past "making my point" into "awkward"
For a database, I have been using PostgreSQL.
Ruby on rails is the only framework I use for SaaS applications.
Plain ES6 for a lot of things that are not as big as a SaaS. React when I need frontend stuff.
Python lives mostly in notebooks for all my thinkering.
I am currently working on a solo project and EXTRA prioritizing for time to MVP. In the past I already delivered one project with React and I found it very unpleasant to debug with my backend even if surprisingly useful for handling complex dynamic behavior in UI. I decided that MVP might as well be as vanilla at it can get considering that I am building very much backend-data driven application.
Python + Flask for backend. vanilla HTML + vanilla Javascript for little of the dynamic behavior that I need now on frontend. after MVP I'll most likely transfer to React because there's a limit where it will become pointless to write JS scripts by hand.
Golang (I only need to upload a binary to my server and done)
Postgres/MySQL/SQlite
Docker and/or binaries.
I use SST [0] for my backend with NodeJS (TypeScript) and Vue (Quasar) for my frontend. For my database I use either Postgres or DynamoDB if the fit is right (Single Table Design is really neat). For Postgres I like Neon [1] though their recent pricing changes make it less appealing.
[0] https://sst.dev
React framework - 20 million NPM downloads a month ()
I've been building with Python FastAPI and a React/Nextjs app. I've gone back and forth on whether we should have used Django, but we've been full steam ahead with what we have.
If I wasn't building in the AI space I think I probably would have used Node <-> React with tRPC to make the typed full stack monorepo experience seamless.
Oh and Postgres - I'm irrationally loyal to Postgres
It doesn't really matter from a technical standpoint, you can build the same UI with any framework (or none). React is still a good default choice if you want to rely on the ecosystem or if you are planning on working with other people. There are lots of devs using react daily at work. Svelte may have twitter-appeal, but not very many big companies are using it.
Vanilla JS
CSS
HTML
--------
Frameworks:
HTMX[0]
Tailwind CSS[1]
Cash[2]
--------
Backend:
PHP
NodeJS
--------
For quick mockups & landing pages:
Webflow[3]
Carrd[4]
--------
Also some no-code SaaS solutions for dealing with tricky stuff like forms
For one of my other projects, my discord bot dashboard (which uses MongoDB and lots of boilerplate stuff for interacting with MongoDB), I'm using ASP.NET Core and Boostrap. It does the job, and it does it quite well.
For a couple of projects where it seems justified, Svelte (with a Django backend).
Plenty of experience over the last decade has me very wary of too many JS dependencies (revisiting anything older than a couple of years has invariably been a nightmare).
For personal projects I sometimes use the same stack, however in some occasions I have used Sveltekit.
I don't do frontend anymore but when I do it's pure JS and Bootstrap/Tailwind.
TypeScript + React in the frontend.
Django, Postgres, React, Docker, Heroku, AWS S3 for static frontend deployment.
Actually, a few months back I started doing something in react, then i asked myself why, then I replaced it with .net/aspx and no javascript.