Ask HN: What's your absolute favorite tech stack, after having tried others?

52 points by user0x1d ↗ HN
I've tried quite a few programming languages/frameworks for both backend and frontend, and I found that I absolutely love working with React on the frontend and I'm on the fence between two options for the backend: Django (because it's so easy to come up with something) and Golang + GraphQL, due to the typed nature of Go and how you combine them with TypeScript on the frontend.

53 comments

[ 4.4 ms ] story [ 113 ms ] thread
You can QCObjects for front-end and back-end in JavaScript for browsers and NodeJs
(comment deleted)
Vanilla DOM manipulation on the front-end, template strings and a markdown renderer in Node on the back-end, flat-files for storage until I end up needing SQLite or sometimes NeDB. If something ends up being too slow I break it out and rewrite it in C and ship it as WASM.

It isn't my favorite aesthetically but as much as I like the various LISPs, Rust and Haskell/Purescript I use the above nine times out of ten.

tried multiple stacks for last 12 years, for past two years I am enamored with Haskell + Elm
Heard Elm is a gateway drug to 'All things functional'. Could not get time to explore other than 'Error handling'
Finding KISS solutions for the project. MVP can also be as a simple as a html and vanilla js to nm validate an idea.
Over the years, here is the tools that answered all of my needs.

Backend:

  - Apollo Server (GraphQL, Javascript/Typescript)
  - Hasura (GraphQL frontend to PostgreSQL, translating GraphQL queries directly to SQL)
  - Erlang/Elixir for distributed applications
Frontend:

  - VueJS + VueX + ApolloClient
  - Bulma (CSS framework, https://bulma.io )
Dev environment:

  - Docker + docker-compose (a single command to spin up the full stack)
  - Makefile (so easy to write, automate any "long" commands)
  - KinD (Kubernetes in Docker, https://kind.sigs.k8s.io/ )
  - Lens (a Kubernetes IDE, https://k8slens.dev/ )
(Pre)Production environment:

  - Managed Kubernetes or k0s ( https://k0sproject.io )
Deployment:

  - Github + PR based workflow
  - CI pipeline as a multi-stage Dockerfile + Github Actions
  - CD with ansible + helm + Github Actions
What do you use `kind` for?
Whenever I'm working on a Kubernetes Operator (like Kubevisor[1]), it's useful for testing.

Also, in a Github Actions workflow, to run full E2E tests.

  [1] - https://kubevisor.io
> - Apollo Server (GraphQL, Javascript/Typescript) > - Hasura (GraphQL frontend to PostgreSQL, translating GraphQL queries directly to SQL)

I'm just getting started with GraphQL. Tried Graphile first (also on top of PostgreSQL), from various other comments I've read. I have a harder time with having the current auth logic (in nodejs) work, since most Graphile tutorials are with row level security. Not sure if I should move to RLS too.

What do you think about Graphile vs Apollo Server+Hasura?

Hasura handles auth quite well (row level AND column level). See this doc[1].

But in general, I either let the reverse proxy handles auth so my backend doesn't have to do anything, or I use the ORY stack[2].

  [1] - https://hasura.io/docs/latest/graphql/core/auth/index.html
  [2] - https://github.com/ory
I'd like to work on a team that uses React on the frontend, Laravel as a thin API backend.

But for personal projects (or an early-stage startup), I would drop React and just use plain old Laravel.

For my content websites: WordPress and Cloudflare.

For my apps:

- React (tsx)

- Fastify

- Postgres w/ Knex

- OpenAPI 3.x w/ TS codegen

- Google Cloud (Run & Functions)

Curious to hear what your CF setup is for WP. Any special performance tricks?
I use the Automatic Platform Optimization tool (with the official CF plugin). I do pay $20 per month for the Pro plan.

That's pretty much it, it handles purging on its own, as well as BYPASSing the cache for signed in users (required for me).

I have another site, much larger (600k page views per month) that I am also going to put behind Cloudflare this week. It does speed up by quite a factor so that's a no brainer.

A few years ago I was Go + GraphQL, but in my experience when your schema is too large it's hard to scale (in terms of code, not performance).

Now I'm using Rust for the backend (its functional aspects make it a perfect choice for writing business logic) which is not REST (more commands oriented, like create_user, create_post, send_email...) and VueJS for the frontend.

Even if it took a little bit of time to learn Rust, I'm extremely satisfied with the productivity of this stack (Far greater than all the other stacks I've experimented)

React gets used at work and I see it sometimes being a backend dev. For personal projects prefer Vue+TypeScript.

Flutter/Dart (or perhaps a game engine Unity/Godot) for mobile unless there's specific support that I need more natively.

Actual backend varies depending on the project and can be anything from Go, F#, Kotlin/Javalin/JDBI, Elixir/Phoenix, and an SQL database either PostgreSQL or MySQL, sometimes CockroachDB, or a service like Firebase. TBH, the choice of backend tech doesn't actually matter that much once your application has a working foundation. Adding more usually just means replicating whatever, hopefully good patterns you've already created, and each successive addition gets easier as the foundation or examples to copy from get larger. Even a PHP/Yii project was as manageable as Ruby/Rails if it's rolling and cared-for, but I wouldn't personally choose these as I prefer static typing and don't feel slowed down by it.

Don't have an answer for Desktop, or need. If I did, I'd want something direct and cross-platform, maybe Java FX (or now Flutter).

Why do you prefer Vue over React? Just want to hear opinions on it
The single file components, and in general, less ceremony e.g. props/events. It basically works closer to something I would imagine to have made. vue-stash is also good for small, shared reactive stores.
This is what my main focus is on these days:

- Vue.js

- Tailwind CSS

- GraphQL (I haven't had a chance to do anything with it yet)

- NodeJS (Rust - if I'm feeling adventurous)

- MongoDB (cause it's easy to set up)

I saved up some money and quit my tech job so I can 100% focus on learning these technologies. Right now, I'm focusing on learning the frontend part of this stack.

Ruby on Rails.

Still have yet to find something else that requires such little configuration and is so complete.

Rails API + React

Just because after years of being in both ecosystems I am ridiculously productive and don't fall into as many traps. With heroku in 30 mins I could have app deployed production ready with auth, CI, API, database setup, and deployment pipeline.

Firebase/ Fluter.

Don't care about Vendor lock-in , or how it actually works. It just does

Dart is such a pleasure

Django + PostgreSQL. That's it. The frontend is just server-rendered Django templates.
For those with a lot of web programming experience, I’m also curious what is the easiest stack in which to achieve good security. I’m also interested in hearing about hosting providers - I would particularly want to support smaller companies (rather than big cloud providers) but am not sure how they do with security, DDoS protection, and other such arcane matters.
I’ve posted our full stack above, but we have had excellent results and zero problems with security (that weren’t our own fault) with .NET Core and Postgres — both are very mature, time-tested, and secure by design.

For hosting, Linode is an independent cloud provider that has secure and reliable service. I’ve heard good things about Digital Ocean, too.

You can use Cloudflare or another specialty company for an extra layer of protection against DDoS attacks and such.

One important note about security and technology, in general:

It is at least as important, if not more so, to configure and use the technology properly as it is to choose any particular one.

There is no software or service whose security can’t be rendered completely ineffective by lack of care or expertise.

Frontend: Vue (typescript)

Backend: Go or Java (simple and minimalistic REST-ish API, not a lot of framework stuff), via Docker. AWS Lambda for some things.

DB: Postgres (usually managed with AWS RDS)

Frontend: HTML

Backend: Lib/cgi.py

Database: Ext4

LAMP Here(P for Perl) - Glad to see CGI after long time. Perl used to be duct-tape of internet.
Go + plain html + plain js + postgres (or mysql) + nginx. If I need something more fancy, then Vue.
react, c#, redis for caching+pubsub, mongo/postgres, clickhouse - awesome for analytics/mi, algolia for search, mindsdb, logentries for log aggregation, datadog monitoring + catchpoint for synthetic tests

killer combo

Curious to hear what you use clickhouse for
Netlify, Svelte, Hasura. Plus a serverless function here or there if really necessary (but usually not)
Ruby on Rails.
Agreed. After 10 years, Im still a fanboy
Elixir + Phoenix

- Oban for background jobs - Cachex for in-memory caching - Tailwind for styling - Hosted on Gigalixir

This stack is the most productive I've ever been

Backend: Elixir preferably, or Go

Transport: GraphQL

Frontend: Tailwind, urql, unpoly, Phoenix LiveView, all JS/TS frameworks are crap, so still waiting for something decent, but otherwise React.

Storage: PostgreSQL

Infra: docker/k8s, Digital Ocean

Frontend: Svelte Backend: Java Spring