from Hacker News

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

by user0x1d on 4/10/21, 4:28 PM with 52 comments

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.
  • by linkdd on 4/10/21, 6:53 PM

    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
  • by jfrisby on 4/11/21, 12:51 AM

    Rails + graphql-ruby + ActiveAdmin + Devise + SideKiq/Faktory + Postgres remains a ridiculously productive combination for me.

    I'm leaning more towards Faktory these days because it makes it possible to move individual jobs from Ruby to Go if/when performance becomes an issue and the much simpler client-side logic makes making performance-related adjustments much simpler and less risky.

    For the front-end, I've been dabbling with Next.js, and using Tailwind heavily. Deployed to S3/CloudFront. I'm not completely sold on Next.js yet, but I've liked it better than the other options I've tried so far.

    For deployment of the backend / admin tooling, Docker + ECR + EC2 + CoreOS, although I'm looking at changing out CoreOS for Debian now that it's effectively DOA. CI does a Docker image build and pushes to ECR, tagging with the git hash. Deployment consists of changing an environment-specific tag to the desired image, and replacing servers. For blue/green deployment you just use 2 different tags (e.g. prod-blue / prod-green).

    I keep a docker-compose config for developers who only work on one piece of the stack at a time and don't want to deal with the complexities of managing the local development environment for the rest but don't personally use it in development.

    For context: I'm a serial technical founder, so time to market is usually the biggest priority for me. Of course, different requirements / career paths are often going to lead to other options being more suitable.

  • by karmakaze on 4/10/21, 8:00 PM

    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).

  • by noahmatisoff on 4/10/21, 8:14 PM

    Ruby on Rails.

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

  • by commonalitydev on 4/11/21, 4:18 AM

    I have developed in many languages and on many tech stacks over the years, but this is my favorite so far:

    * Linux, Docker, and Ansible (on-prem or cloud; love Linode)

    * Postgres (I really like SQL Server, too, but it’s not open source)

    * Redis for caching and other transient data

    * .NET Core with C# and F#

        Powerful, fast, mature, open source, cross-platform,
        trustworthy 3rd-party libraries, great documentation 
        and support community — what more could you want?
    
    * ASP.NET MVC (WebAPI or Razor views)

    * jQuery and Tailwind or Bootstrap, but we use Vue, React, and others as necessary

    * GitLab or GitHub; Jenkins or TeamCity if we need discrete CI/CD

    * Neovim, VS Code, or Rider (for full IDE); ssh, zsh, and tmux

    => Very productive and stable tool chain for us going on four years now.

       It’s also *extremely scalable*, both with regard to runtime load and code base organization & maintainability.
    
       Lots of other frameworks and languages that are easy to get started with fall apart when the project gets large and complex.
  • by sylvain_kerkour on 4/10/21, 7:45 PM

    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)

  • by ingvul on 4/10/21, 10:40 PM

    Go + plain html + plain js + postgres (or mysql) + nginx. If I need something more fancy, then Vue.
  • by JackMorgan on 4/11/21, 10:44 AM

    F# on .NET Core is my favorite right now by a fair margin. It runs anywhere, is extremely fast, and jetBrains Rider is great. The .NET ecosystem has a library for everything, and comes with a lot of batteries included. F# is a great compromise between purely functional and pragmatic.

    If not F#, then Haskell comes in second, and Clojure comes in third.

    For a web frontend, if it can't be server side rendered templates, then React and Typescript.

  • by mvnissen88 on 4/12/21, 12:40 PM

    I built loads of sites. Both small and very large. Primarily with Drupal 7 and Drupal 8. Recently i'm in the process of building: - https://hundeavl.dk - https://brudensynger.dk - https://indspilning.dk - https://firmaetsynger.dk - https://konfirmandensynger.dk

    with ReactJS and a headless CMS with Postgres. I can recommend that stack. Love the NodeJS and JS way more than PHP stuff. For the frontend i've built a custom PostCSS framework thats not bloated.

    Good luck!

  • by SuboptimalEng on 4/10/21, 8:11 PM

    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.

  • by khaledh on 4/10/21, 9:29 PM

    Django + PostgreSQL. That's it. The frontend is just server-rendered Django templates.
  • by offtop5 on 4/10/21, 8:27 PM

    Firebase/ Fluter.

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

    Dart is such a pleasure

  • by 1_player on 4/11/21, 12:10 AM

    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

  • by errantspark on 4/10/21, 6:43 PM

    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.

  • by skittleson on 4/10/21, 6:51 PM

    Finding KISS solutions for the project. MVP can also be as a simple as a html and vanilla js to nm validate an idea.
  • by turtlebits on 4/10/21, 11:01 PM

    Netlify, Svelte, Hasura. Plus a serverless function here or there if really necessary (but usually not)
  • by r-s on 4/10/21, 8:24 PM

    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.

  • by phendrenad2 on 4/10/21, 6:54 PM

    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.

  • by jmd42 on 4/10/21, 9:45 PM

    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)

  • by potta_coffee on 4/11/21, 12:27 AM

    Used to be a Python backend developer, have used Python, PHP, Javascript and C# on the backend and I'm now pretty invested in Go. It has its cons but is my favorite experience for backend / web services development so far. Environment is easy to setup, compilation is fast, performance is good, language is relatively simple, concurrency feels like a superpower coming from Python and PHP.
  • by j10c on 4/12/21, 11:07 AM

    Php, mysql/postgres for backend, bootstrap for css and vanilla javascript. Sometime I use react for frontend.
  • by z5h on 4/11/21, 2:50 AM

    Best experiences for me so far have been: Elm on the front talking to Firebase via ports, and Elm on the front talking to a backend via GraphQL.

    Still a fan of relational databases and SQL. I think Rails apps can get out of hand very quickly, but I actually like much of ActiveRecord.

  • by quickthrower2 on 4/11/21, 3:59 AM

    I don’t have one as I rarely have the same problem twice. For example React is great but for simple problems vanilla JS is just fine and I prefer it to avoid a tool chain for example webpack etc.

    Back end I’d go with nodejs but if I can get away with a paas maybe I’d use that.

  • by topicseed on 4/10/21, 7:32 PM

    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)

  • by DamnYuppie on 4/10/21, 11:20 PM

    Ruby on Rails.
  • by mjmasia on 4/10/21, 11:53 PM

    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

  • by FractalHQ on 4/12/21, 5:43 PM

    Nothing beats Svelte and Postgres for most web apps these days. Hasura can be a great addition to PG.
  • by rajacombinator on 4/11/21, 4:41 AM

    The best stack is the one you know. That said, for elegance and productivity it’s python all the way.
  • by m_j_g on 4/10/21, 6:46 PM

    tried multiple stacks for last 12 years, for past two years I am enamored with Haskell + Elm
  • by quickcorp on 4/10/21, 4:40 PM

    You can QCObjects for front-end and back-end in JavaScript for browsers and NodeJs
  • by Redsquare on 4/10/21, 10:54 PM

    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

  • by pyjug on 4/11/21, 5:50 AM

    Backend: Java + Dropwizard + Postgres

    Frontend: Typescript, no framework

  • by mbrodersen on 4/11/21, 4:28 AM

    C++ and Typescript. What else do you really need?
  • by Graffur on 4/11/21, 12:18 AM

    Frontend: Svelte Backend: Java Spring
  • by pgcj_poster on 4/10/21, 10:22 PM

    Frontend: HTML

    Backend: Lib/cgi.py

    Database: Ext4

  • by throwawaysea on 4/10/21, 9:43 PM

    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.