Ask HN: What is the most pleasant, uncomplicated full stack to start with?
Hey HN,
I'm a backend/systems programmer by trade who has always wanted to build a full stack app, but gets frustrated / overwhelmed by 'modern' web dev. I’m incredibly wary of overcomplicating and don’t want to throw in the entire kitchen, if YAGNI. I want to build a somewhat complicated UI (think Notion level) and not completely bend over backwards making the front-end work through 10000 layers of abstraction.
Right now, I'm looking at Svelte(kit) and a Go (stdlib) or Rust (Axum) backend. I know Rust is a bit of a meme, but I find it very pleasant to write vs. Go in a lot of respects.
Is there something else out there that is worth trying? I have thought about trying Elm, but it seems to be niche / not future-proof.
Thanks.
76 comments
[ 4.7 ms ] story [ 136 ms ] threadIf your goal is to learn the marketable skill of building web apps in 2023, you can't go wrong with Typescript on the front and back end with NextJs (aka React, aka one of the most in-demand technologies employment-wise in the industry).
If your goal is to just have some fun on then Svelte + Rust ain't a bad idea.
Google Forms is a great frontend for Sheets if you just need a way to collect data.
Can you actually use NextJS as a back end? It's been a few years since I last worked with it. I recall it ran a server we had to deploy, but that server only did some server side rendering of the frontend.
If you hate javascript then php and laravel on the backend, javascript on the frontend.
Linux, Apache/Nginx, MySQL, PHP
I don't use MySQL anymore but otherwise this is my favorite stack. Nowadays, I use sqlite, flat json files, or google sheets.
Try refactoring 20 year old php then tell me it is pleasant. If you can't, it shouldn't be recommended to OP
I have a couple large projects written in PHP from 10-20 years ago that I'm sure I could refactor or make changes to easily.
https://github.com/photo/frontend
https://github.com/jmathai/photos
Instant Upgrades and Automated Refactoring of any PHP 5.3+ code
edit: I read the title as 'unpleasant', lol. I do not endorse this comment.
Even if we are attracted by new libraries (Svelte) or think of going with the most popular choice (React), Rails is still one of (if not THE) most comfortable fullstack frameworks for building web apps.
You mention that you get frustrated by modern web dev - I assume you mean the insane world of javascript frameworks. You can build entire rails apps without ever really worrying about JS these days.[^1] Hotwired lets you build fairly complex UIs and add a ton of interactivity without JS. But if you ever want to do more with JS on the frontend it's very easy to adapt rails to just about any frontend JS framework, including React and Svelte.
That said, there's comparable full-stack frameworks in many languages, and if you just want to hit the ground running you might as well use what you know. Ruby - Rails. Java - Spring. Python - Django. PHP - Laravel. You can use whatever frontend you want with any of those frameworks.
Stick with Postgres or Mysql/Maria for the database. They're tried-and-true and scale to whatever size you will ever need.
[^1]: https://hotwired.dev/
- https://stripe.com/blog/sorbet-stripes-type-checker-for-ruby
- https://sorbet.org/
https://fly.io/docs/rails/
React+Rails makes you insanely marketable these days. There's SO MANY companies with large rails apps out there that aren't going anywhere.
Just did a quick google search and this is the first result I found: https://github.com/brandonfang/lilnotion
If you care about performance and being productive: Go
If you want to play with new tech: Rust
FastAPI is on the rise for python and is also something to consider if scaling is a concern.
You can build your entire startup with JUST Django or JUST Rails. That’s frontend and backend. Flask/CherryPy/Express just give you the backend and leave you writing JavaScript for your frontend.
For the front-end, I found Vuejs quite nice to add exactly where it's needed. Otherwise I can leave 99% of the site a plain html template.
For backend dotnet core is also nice. Fast and batteries included. I would avoid their Entity framework though. I still prefer TS.
I generally liked working with NodeJS, and plain JavaScript both on the server and browser side. It shines for applications where things are kept extremely simple.
If things are going to get a little complicated, swapping in Typescript will bring in the compiler to check things for you. This will be useful if your codebase gets large enough to refactor, and benefit from a statically checked compiler.
Remember that plain JavaScript in the browser is a thing, and if your needs are simple, you can do a lot with it.
Also: I really like Blazor and C#. It's a completely different stack, and much more complicated. But it's much more powerful, and the straightforward, templated HTML via razor is a real joy to work with.
Edit: One nice advantage of server-side Blazor is that you don't need to write an API to do AJAX. (IE, you can mix database queries in your UI code.) This "keep it simple" has it's place in some situations. (Of course, you can do in-browser Blazor with a proper API and separate layers if needed.)
https://flask.palletsprojects.com/en/2.2.x/quickstart/#a-min...
https://dataset.readthedocs.io/
https://github.com/axios/axios
https://vuejs.org/guide/introduction.html
https://vuejs.org/guide/extras/ways-of-using-vue.html
I've created a boilerplate here:
https://github.com/void4/lazyweb
It produces a static site & lets you focus entirely on the UI side, without linking the frontend to a 'real' backend/database. Good enough for a blog/similar style of site.
Do the whole thing in typescript.
Have the power of reusable components using React.
Serve zero JS if you want to.
Build with what you know to start with. Find a way to frontend that you don't hate. Focus on making your data and algorithms portable. Change your opinion and tech stack when (if!) you need to.