HACKER Q&A
📣 ryanSrich

Fastest/easiest framework to build a web application in 2020?


I asked this same question a couple of years ago -> https://news.ycombinator.com/item?id=15715547

Since then a lot has changed. I'm curious what people consider the fastest/easiest way to build a full-stack SaaS app in 2020.

Assume the following:

- Can be picked up by almost anyone (assume basic HTM/CSS/JS understanding), doesn't require any deep CS understanding (think how easy Rails was in 2006)

- Has full-stack capabilities, not just front-end

- Is open source and can be deployed anywhere

- Is complex enough to rule our no code solutions like Bubble or Webflow


  👤 franga2000 Accepted Answer ✓
Django. Nothing has ever surpassed Django for me. It is soooo much faster to prototype with than anything I've ever used (especially when you know all the amazing shortcuts, but that's not a requirement as their docs are incredibly good).

It can do anything you could possibly want to do with a standard web app and if you really want to do crazy Javascript things you can always just use it as an extremely powerful backend for whatever the frontend framework of the day is. The admin site alone has saved me weeks of work and I keep finding amazing features in it that often just seem like magic (formsets!!).


👤 mterrel
My personal picks would be:

- React for the front end (https://reactjs.org)

- Node.js for your back end (https://nodejs.org)

- Deploy using Adapt, which ties your front and back end together using React-like components. (https://adaptjs.org).

- (Optional) If this project is larger or commercial, definitely use TypeScript on all 3 of the above (http://www.typescriptlang.org/)

[Disclosure: I'm a maintainer of Adapt, but a strong believer in the React model and ecosystem]


👤 Alex3917
Still Django. It's in a weird state where it's starting to show its age, but everything else is at least 10 years away from catching up. So still the best bet if you're starting something new today.

👤 jaredcwhite
Rails is less "easy" than it used to be due to the integration of Webpack (via the Webpacker gem) and thus the entire world of frontend JS development…yet that move in many ways "saved" Rails as a serious tool for modern web professionals.

So while I'm not sure Rails is easiest to pick up for a complete newbie, I am sure that there is still no framework that can touch Rails when it comes to fast/easy to build an entire web application from scratch that is truly broadly deployable and maintainable for years to come and won't cause you to tear your hair out every other day. :)


👤 bussierem
5 answers as of my typing this, all 5 recommending almost entirely different options.

I think you're not going to see much consensus to this question, merely a comment-based list of all possible frameworks that people know.

User joshmn had it right in his reply:

> If you know something now, use it.

Anything your team already knows will be easiest and fastest for you to use. Any new person you hire will have a lot to learn no matter which one you choose, unless you hire people for the framework/stack you chose.

There is no "right" answer to this, and there probably never will be, and that's not a bad thing. Trying to find the "perfect" solution is a futile effort.


👤 joshmn
If you know something now, use it.

If you don't, Rails or Laravel are both good options. I'm partial to Ruby, its syntax, its expressiveness; the ecosystem cannot be beat, and the tooling is stable and mature. There's nothing not to like.


👤 BenjieGillam
Check out Graphile Starter; it is a fullstack starter project for building a SaaS with PostGraphile in TypeScript with React (Next.js) and Apollo Client. It has all of the modern tooling preconfigured including type checking, linting, formatting, unit testing, acceptance testing with Cypress, CI via GitHub actions, code generation to increase development velocity and much more. On top of that, the user account system is pre-built with everything you’d expect: login with username/email and password or social login with OAuth, forgot password flow, change password, multiple email management, email verification, etc. It also has a job queue and migration framework built in and preconfigured, plus instructions on how to deploy... I’ve put a lot of work into it! https://github.com/graphile/starter

👤 DrJones1098
VueJs/Reactjs for the front end.

PostgREST or Serverless framework for the backend.

Avoid middle ware all together!

https://github.com/PostgREST/postgrest

https://serverless.com/


👤 asadlionpk
I am the maintainer of Zero[0]. The idea is to abstract all the config that causes the friction in the beginning.

[0]https://zeroserver.io/


👤 aantix
Ruby on Rails, hosted on Heroku, with the Jumpstart Rails template. https://jumpstartrails.com/

Stimulus Reflex for real-time dynamic updates without the complexities of React components. https://github.com/hopsoft/stimulus_reflex


👤 codegeek
Depends on your choice of language:

Python => Django

PHP => Laravel

Ruby => Rails

Node/JS => ExpressJS

Elixir => Phoenix

My personal opinion on building web applications the quickest way. I mostly use Laravel.


👤 coreymaass
I gave a talk a couple of years ago about using WordPress and still highly recommend it. It solves so many problems out of the box - account management, routing, CRUD, etc. Here's a video of the talk:

https://wordpress.tv/2019/04/23/corey-maass-build-a-web-app-...

There are a number of large web apps that use it, so it's not just for MVP's. I also heard the book "Building Web Apps with WordPress: WordPress as an Application Framework" will be getting a second edition this year.

It's not the coolest, shiniest option, but a solid one, I think.


👤 Nextgrid
A lot of answers suggest a Node.js stack. I’d like to say that the problem with Node is that there isn’t really a “batteries included” stack you can choose from, unlike other languages.

You can indeed use Express.js for the HTTP part, but you’ll need to pick an ORM, a rest framework, etc and make sure they integrate properly which might include writing “glue” code to bring them together.

Unless you’re knowledgeable about Javascript I suggest you avoid this option and instead pick another language you know that happens to have a batteries-included framework like Django, Laravel or Rails just to make development faster as these frameworks include everything you need out of the box and are tested to work well out of the box.


👤 theluketowers
I'd recommend taking a look at October CMS (https://octobercms.com/). It looks pretty simple from the intro video but if you take a bit of time getting to know it better you'll be blown away at how quickly and easily you can get something up and running that remains flexible & scalable enough to grow pretty big.

Disclaimer, biased as I am the lead maintainer for the project ;)


👤 satyavh
I know that Meteor has a somehow bad reputation, but I still believe the framework is the best full-stack solution in the Node universe and has a bright future. It has evolved a lot, and currently has a new owner, team and funding.

- Tight integration with React, Vue, Svelte - Natively supports Mongo, but there are good GraphQL and SQL integrations these days - Plug 'n play user accounts (customisable) - Easy to deploy - Builds to Android, iOS, even desktop these days. - Tight integration between back and frontend. Extremely simple to write API's or realtime applications - It's simply Node on backend, do whatever you're used to - Still a very active community - Tons of apps running happily in production (the myth of it not scaling is due to developers not understanding, not the framework itself)

We continue using it, nothing develops as fast and easy - at least in the Node world.


👤 wheresvic3
I would recommend looking into Node.js for the back-end. You can then combine it with either React/Angular or even just a plain jQuery front-end.

The nice part about Node is that you'll have JS on both the front and back ends.

It really scalable and if you use typescript, you can get type safety as well :)


👤 mc3
"think how easy Rails was in 2006"

There is your answer!

But for anyone with a decent amount of programming experience in a mainstream high level language like C# / Java / JS / Python / Ruby etc. it's probably best to stick to your own language and pick it's stack, if it is dev speed you are after. Some might be easier to set up than others, but there are plenty of example github repos you can clone to get started anyway.

For (what I'll call.. sue me) "systems" languages C, C++, Haskell, Rust, GO etc, I'd probably move over to one of the mainstream stacks for getting things done fast, as they will have a better ecosystem. Also if you already know one of those languages you can easily work with the mainstream ones!


👤 patrickdevivo
My go-to are Next.js (https://nextjs.org/) and Hasura (https://hasura.io/). Graphql has a bit of a learning curve if you haven't worked with it, but those two tools deliver a pretty amazing developer experience.

Next.js is react + ssr + routing and more. Hasura exposes an auto-generated graphql API in front of a postgres instance, with hooks for auth/authz and much more.


👤 csomar
The setup I'm using right probably can't be picked by "anyone" but I think is the best/future-proof for small apps and it's also very easy to maintain if you are growing.

- Front-End: Vue.js with Bulma.css - Webpack/Gulp for building JavaScript/SCSS. (I have the blueprint here: https://github.com/omarabid/front-root but there is still no docs and rough edges). The website is/will always be static files generated by Gulp. First frontier for scaling is eased.

- API: I use a GraphQl server. This avoid the mess that is RESTful. It also give me a nice explorer, so I can make my application and be able to roughly work with it before I have an interface ready. This part is also easy to scale.

- Application: Rust. Technically, you can use anything here. But since I don't have any web components (the site is static and the API is served through GraphQl) then I use Rust which I find very productive. Rust generates a compiled program which run inside a container and makes deployment more enjoyable.

- Database: Postgres/Redis.

- Deployment: Everything runs in a container. I use Hashicorp software for deploying and orchestrating the servers. Terraform if I have a simple single server app. Or Consul/Nomad/Vault if I'm running multiple servers.

It might sound complicated but beyond the initial investment to set things up, you have a stable/reliable micro-services app.


👤 saluki
Laravel feels very similar to what Rails was like in 2006.

It has a great ecosystem and lots of great packages and tools to make it fun and easy to develop web applications.


👤 rtcoms
Ruby on Rails - Libraries/Gems it have are quite matured with very good documentation.

Authentication, file upload, admin interface ... are some of those.


👤 cweagans
I'm building a new application this year and I'll be using Go for the backend and Flutter for the frontend (both web and mobile).

👤 simplecto
Hahah. I just published a blog post on this very topic. I will self-promote and link it here as it is certainly relevant:

https://www.simplecto.com/django-my-go-to-application-framew...

Following on that, enough HNers have laid out the Django story, but I want to give some more depth to it. This is my entire stack:

- Linux Server/VM Hosted anywhere (I like Azure, Digital Ocean, or Scaleway) - Docker. Just plain docker - Postgresql running in docker - Django in a container - Intercoolerjs for easy and slick Ajax-like front-end work - Traefik for reverse proxy and TLS with LetsEncrypt - Sentry for catching production bugs (easy three-lines added to your config) - Bitbucket pipelines for CI/CD

For smaller projects I run tests locally in docker containers and then push directly into produciton. I dont bother with full CI/CD because I don't need the complexity of it all.


👤 gcatalfamo
The one with the language you are already most comfortable with. Believe me.

👤 talmr
Use what you know.

If you know JS, just stick to Node + Express.

I stick to Go or Node for the backend, and create-react-app for the web client. I prefer Go in most cases because I don't need to rely on many external deps, and I have my own starters for both Go and Node to create services quickly (rest, real time, assets, data/repository)


👤 baldeagle
I like gatsby.js hosted on netlify. Netlify provides a limited set of backend and lands support. It is a JAM stack app (JavaScript/APIs/Markup)

It does have graphQL which can get a little tricky, but the constantly rebuilding dev environment and GitHub hook driven deployments make running a site a breeze.


👤 karmakaze
For front-end single-page-app I'd choose Vue over React.

For back-end I'm currently favouring F#/Giraffe. I'm new to .NET Core but F# is reason enough to try it out. Previously I've used Go or Kotlin/Java with Javalin/JDBI which I find lighter and simpler than Spring/Boot.


👤 CompBrogrammer
If I may, I have a related question I'd like to ask.

I'm a front-end developer looking to get serious about practicing my back-end development skills. Any recommendations for a language/framework with static typing (outside of Node + TS)? Spring Boot and Kotlin? .NET Core? Go?


👤 maremmano
I really like Flask at the moment. It seems to satisfy all your prerequisites.

👤 sendilkumarn
Do you want fastest/easiest? I may be opinionated but try JHipster. If you want a Kotlin version try KHipster. Full Stack + Open source + all bells and whistles loded

👤 oshanz
Ruby on Rails

👤 segmondy
The one you know best. If you have 0 programming experience go with php. If you do have programming experience, then framework for the language you know best.

👤 metaphyze
If you love Java but hate JavaEE, check out Spark Java: http://sparkjava.com/

👤 hilti
I still love CodeIgniter for it‘s good documentation, simple deployment (just use SFTP) and easy to learn curve.

👤 p0d
Some friends are working on budibase.com. We are part of the same incubator programme.

👤 johndevor
Meteor.js

👤 dimitar
For me it is Clojure(script) + libraries, no frameworks.

👤 thr483900
Front: Quasar/Vue

Back: FastAPI


👤 neuroticfish
>think how easy Rails was in 2006

So why not use Rails?


👤 mirakl3
Ruby on Rails

👤 maveonair
Ruby on Rails

👤 adamiscool8
LAMP + Vue

👤 0xff00ffee
Check out Vue.JS before React/Angular. I find it much more succinct. Node+Express is a very fast backend.

Plus the advantage is ES6 all around. Node utilizes the host resources much more effectively than PHP. And PHP requires Laravel/Artisan to make up for its shortcomings, IMHO. It feels like those to extensions were built for people with extensive PHP backgrounds, and not newcomers. Whereas Node does a better job onramping IMHO.

I find using JS on both ends is much easier than trying to bring in a bigger system like Rails/Django/Apache+PHP.

Especially if you are starting from Square One.