HACKER Q&A
📣 Calamity

Go-To Web Stack Today?


I'm an engineer who's just left academia where I spent most of my time programming in either Python or C++. Want to develop a web app in my spare time but getting analysis paralysis trying to decide on a stack.

Having looked into it a bit, I was thinking something along the lines of Vue.js / Django / PostgreSQL to leverage my familiarity with Python.

On the other hand, React & Next.js on Vercel seems to be buzzing. Is that just me or is something similar what webdev is moving towards?


  👤 speedgoose Accepted Answer ✓
I don't think there is one. React is the most popular on the front-end side but you can pick Vue or Svelte without taking risks too.

On the backend it's very open and you can select what is the best for your use case. Maybe golang, Ruby on rails, Django, express.js, Apollo Server, Hasura.io, Java spring, .net just to name a few.


👤 NicoJuicy
Pick the hyped stack if you want to learn.

Pick the tools that you're comfortable with if you want to finish.


👤 oblib
>>analysis paralysis trying to decide on a stack.

Yeah, I went through that a few years ago. I went to "TodoMVC.com" and started going over their demos. Spent over a month on that and then a couple more weeks fretting over which one to use. I finally realized I didn't want to invest in any of them.

Instead I use these off the shelf toolkits: Bootstrap for the front end and jQuery, Mustache.js, Accounting.js, Chart.js, and PouchDB.js on the client side along with CouchDB and a bit Perl or Python where needed on the server side.

This is really a pretty sweet way to go. First off, I didn't have to invest in learning how use a "framework" or set up anything on my web VPS except a web server (Apache) and the CouchDB database (also made by Apache).

It's really pretty impressive how much those tookits can do, and how easy they are to use, and how well they work together. That is a really powerful toolset that's rock solid.

PouchDB.js makes working with CouchDB so sweet and easy, and you can configure it to use the web browser's built-in IndexedDB so you don't even need a CouchDB to get started building your app. You change one line of code to switch from the web browser DB to the CouchDB.

And you can install CouchDB on your desktop PC and point your app at it. When you do that, and configure a "Service Worker" for your app you can make an "Offline-First/Local-First" app that runs at near native app speed that can "Live-Sync" with your Cloud based CouchDB on your web server.

The real beauty in this set up is the flexibility. You can drop in any JS toolkit you need to add features and mix it up with plain vanilla JS to create feature rich "single page" web apps that are easy to maintain and use very little bandwidth.

Unless your working with huge amounts of data you can run the web server and the CouchDB on a $20 a month DigitalOcean VPS and it will never break a sweat.

It's worth checking out PouchDB.com and going over their intro and API docs to get an idea of what PouchDB.js does. They have a demo "Todo app" there you can build to get a feel for it.

I have an app you can also check out at https://pugilis.com/app.html

It's a boxing scorecard and boxer database app.


👤 jguzmanjr
I recommend giving Actix Web a try, was able to use the knowledge of Python Flask to build it. Rust has sum types which makes development much nicer especially with all the inevitable business logic that is associated with backend web dev.

👤 linsomniac
I've really enjoyed Flask and Quart (asyncio Flask) for my smaller tool sort of web services as the backend. It can run either self-contained, via uwsgi.

For the frontend component, I'd probably be looking at Vue in the future, I haven't done much on that front.

My most recent toy was replacing the backend of MailHog with Python, the existing one has been flaky for us I'm not the right guy to fix Java. So I built a Quart app with aiosmtpd to make a single program that could process SMTP and HTTP to show the incoming messages in a browser. Used for dev/staging environment to capture and view the messages our system would send out.


👤 wrycoder
Svelte on the frontend and Fiber on the backend.

👤 Graffur
React & Java

👤 PaulHoule
I write all kinds of low-volume webapps (e.g. for my personal use) that I use for things like workflow applications, classifying objects and controlling IoT devices.

I think it is fun to do this with asyncio in Python, particularly building systems that (say) communicate in real time listening to websockets, AQMP and some other sockets at the same time.

Every team I've been on for the last 10 years or so has used the JVM (either Java, Scala, or Kotlin code) for the back end. The strength of the JVM is that it handles parallelism and concurrency. It doesn't just claim to exploit processors with a many cores, it really does. (Before that I worked on a C# project which is almost the same.)

Python, node.js and similar things don't have a good multicore story so they are not going to hold up to heavy use.