
Ask HN: What frameworks are currently used in a modern web stack? - debt
I&#x27;m curious which tools and frameworks are popular amongst today&#x27;s web developers.
======
NatW
Ruby on Rails or Node.js for the backend (API) and React for the front end.
Rails is excellent for database migrations. Postgresql / MongoDb / Firebase
for the database, depending on requirements.

~~~
throwaway2016a
I'm saying this as a Node.js user myself so I'm not putting down Node but...
Node.js is not a "Framework"

Sails.js is a framework. You could argue that Express is. But Node itself if
not.

~~~
crisopolis
2nd this... Node.js for the 1 billionth time is not a "Framework". It is a
JavaScript runtime.

Sails.js, Meteor.js, and etc... are frameworks that use/run on Node.js.

------
richardboegli
How it feels to learn JavaScript in 2016 [https://hackernoon.com/how-it-feels-
to-learn-javascript-in-2...](https://hackernoon.com/how-it-feels-to-learn-
javascript-in-2016-d3a717dd577f#.l8ak5j3gz)

HN discussion:
[https://news.ycombinator.com/item?id=12634577](https://news.ycombinator.com/item?id=12634577)

~~~
Uehreka
That article is a sarcastic joke about JS frameworks. I would not recommend it
as a learning resource.

~~~
ryandvm
Sarcasm and satire are very powerful weapons in the persuasive writer's
arsenal.

------
alexanderson
The hipster stack is an interesting one. Elixir + Phoenix framework, GraphQL,
React.

Honestly, though, I'm doing everything with GraphQL now. It is a huge benefit
for all aspects of application stack design now.

~~~
hackerboos
Did GraphQL fix the authorization problems? Locking resources and attributes
to authorised users?

~~~
alexanderson
Using Apollo Server, I get around authentication with an auth query which
updates the context object of the query with the auth token of the user. Then,
any subsequent queries can use that auth token to authenticate the user and
authorize it for the query themselves.

I've also seen it where the authentication is handled by middleware before
GraphQL even touches the request. I figure those two methods work for about
every use case.

------
joe_c
Check this out...

[https://stackshare.io](https://stackshare.io)

and their blog for featured posts...

[https://stackshare.io/posts](https://stackshare.io/posts)

------
k__
The current stack I work with:

Gulp for task (test/build/etc.)

Webpack for bundeling

React/Redux for the front-end

Bootstrap for the styling

Koa for the back-end

Socket.IO for the realtime stuff

RethinkDB as the datastore

Nginx as the reverse proxy to the API and static file server

What would I change in the future?

Getting rid of Gulp, most of the time Make should be enough.

Replacing Redux, Socket.IO and Koa with the Apollo stack. GraphQL with its
subscriptions solves most of the problems I had with REST and WebSocket APIs
the last years.

I'd probably use Preact instead of React, because it's much smaller. The React
eco-system is unbeatable, so I wouldn't switch frameworks in the near future.

Don't know about Rethink, it's a really nice DB and the change-feeds play well
with GraphQL subscriptions on the other hand the company behind it went down
the drain :\

~~~
rohannair
apollo-server plugs into Koa, so no need to replace Koa.

------
wjdp
No love for Django? Django/Postgres

~~~
lastofus
I'd like to think Django devs are busy getting stuff done instead of obsessing
over the latest tech stack :)

In all seriousness, Django Channels looks to be a very good offering to
compete with the async real time capabilities Go/Elixir/Node bring to the
table.

[https://channels.readthedocs.io/en/stable/](https://channels.readthedocs.io/en/stable/)

~~~
debt
I'm a Django guy myself but I'm always curious what people are using.

------
osullivj
Angular 1.5, Tornado 4.2 & RethinkDB 2.3.5 for me. Tornado coroutines play
beautifully with Rethink queries and change feeds. I've also got a proprietary
C++ framework in the middle tier, so some of the server processes are C++
Python hybrids. Fortunately Tornado makes it easy to dispatch events into the
C++ code via a think wrapper built in Python's C++.

~~~
kookster
...might want to rethink rethink [http://www.defstartup.org/2017/01/18/why-
rethinkdb-failed.ht...](http://www.defstartup.org/2017/01/18/why-rethinkdb-
failed.html)

------
thibaut_barrere
Phoenix/Elixir/Vue.js/Postgresql is a very strong/efficient stack IMO these
days.

~~~
rajangdavis
Do you use Vue.js with Phoenix Channels? I've been very curious how one would
integrate a javascript framework on top of Phoenix.

~~~
thibaut_barrere
Not yet, but here are some links which I saved:

\- [https://medium.com/@jespr/create-a-simple-chat-web-app-
using...](https://medium.com/@jespr/create-a-simple-chat-web-app-using-
phoenix-and-vue-js-bc5d82e53f9b)

\- [https://github.com/ssuprunenko/phoenix-
vue-2-example](https://github.com/ssuprunenko/phoenix-vue-2-example)

\- [http://fullstackstanley.com/read/realtime-chat-with-vue-
js-a...](http://fullstackstanley.com/read/realtime-chat-with-vue-js-and-
phoenix)

------
sAbakumoff
ASP.NET Core is a lean and composable framework for building web and cloud
applications. ASP.NET Core is fully open source and available on GitHub.
ASP.NET Core is available on Windows, Mac, and Linux.

~~~
throwaway13337
I'm excited about the future of .net core on linux but I'm waiting to hear
some success stories.

Have you built something significant with it you can point to? This is not
snark - I'd really love to hear about it.

~~~
manyxcxi
I've spent at least the last 10 years (including Uni days) writing mostly Java
or .NET in some form or other.

I don't mind Java, I generally like using Java 8, but I would happily be
writing C# instead if I could run it as easy in as many places. The syntactic
sugar, Linq, the latest MVC framework, etc- are generally much faster to get
moving in and don't require the configuration hell you can run into w/ Java.

However, as a guy who ALSO maintains the servers and deployment process for
the things we build, I'll continue avoiding .NET until it can be built,
archived, and deployed as easily as we do our Java based applications. I don't
think I could even maintain a Windows Server now if I had to.

~~~
cableshaft
We use Octopus Deploy at work to deploy .NET. There's a bit of a learning
curve, and it has a few quirks and annoyances, and you might need to write
some Powershell scripts to fill in a few gaps (which it can run), but once
you've got it in place, it's super simple to deploy everything. Every single
deploy used to be a big hullabaloo at our company, now it's super smooth
thanks to Octopus.

If you're talking about Ant, Maven, Tomcat, etc for Java deployment, it's been
about 5 years since I've had to use that, but I'd say Octopus is a much better
process than that.

~~~
manyxcxi
We tried using Octopus (3 years ago) as part of our CI/CD pipeline and ran
into a big problem with it choking on file sizes and handling all the bundled
dependencies we threw at it. Eventually we just scripted MSBuild and archived
them ourselves for retrieval when we needed them.

~~~
cableshaft
We don't have anything too huge we give it. I think our largest package is
like 100MB. But we do have about 40 active projects in its system. Also, I
attended something by a guy who worked for Accenture, who talked about using
it with thousands of active projects and some of the technical issues they had
to overcome (and work directly with Octopus team to help resolve, at some
points) with such a massive amount of projects.

It was this guy that gave the talk, he has a blog with lots of information
about his experience with Octopus. A few of the quirks I encountered when
getting everything set up with our company were resolved by reading his blog:
[http://ianpaullin.com/category/octopus-
deploy/](http://ianpaullin.com/category/octopus-deploy/)

------
lprubin
Graph based on Github and Stackoverflow data.

[http://hotframeworks.com/](http://hotframeworks.com/)

~~~
citrusui
Interesting that Bootstrap/Foundation/Semantic UI isn't up there. Is it
because they only handle the front-end interface?

------
nozzlegear
It's not perfect, but I've landed on Node + Express for the backend and React
for the frontend with both of them being written in TypeScript. It's
_incredibly_ nice to share the typings between my frontend and backend. I've
also been pleasantly surprised by Nancy [1] on Mono, though, and almost always
choose that when I need to use C#.

[1]: [http://nancyfx.org/](http://nancyfx.org/)

------
ams6110
I'd be more curious to see a timeline of which tools and frameworks were
popular over the last 10 years. I bet the amount of churn would surprise
people.

~~~
jlengrand
I didn't know the website, thanks!

------
caleblloyd
.NET Core with Entity Framework ORM and a relational database on the backend.

Angular 1 on the frontend unless you have over 100 bound variables on a page,
then consider ReactJS or VueJS.

~~~
fatso83
You advise to use an abondoned tech (Angular 1), that was full of unstable
plugins and hard to use setups while it was active, instead of a simple to use
view layer like React?

The api surface of Angular is way too big to invest in, compared to the
alternatives, of which there are many. ReactJS is vastly more popular for a
reason, even though it arrived at a time when Angular already had a big
following and huge momentum.

If you have a super simple front-end with few variables you don't need a
framework anyway. Vanilla JS is fine. But React+Redux is killer once it starts
to grow into a big SPA.

~~~
rpeden
I don't disagree with you advice re: React.

Angular 1's commit graph shows it is far from abandoned, though:
[https://github.com/angular/angular.js/graphs/contributors](https://github.com/angular/angular.js/graphs/contributors)

From what I've seen, Angular 1 is used in so many enterprise projects that
some big companies would probably be willing to pay for continued development
and support for years, should anyone be willing to provide it.

------
pesch3
Grails([https://grails.org/](https://grails.org/)) if you want "rails" in the
java world

~~~
dmux
Including DB migrations. I don't know if I could ever go back to working with
SQL directly after using GORM.

------
alrpal
I still love Django. With vue.js in the client where necessary.

~~~
throwaway13337
Vue + django rest framework seems to be a sweet spot for single page apps at
the moment.

------
jbrooksuk
Laravel, Nginx, PHP 7.0 and Postgres/MySQL.

~~~
garymoon
I used Laravel for some projects that deal a few users. Where I work, we are
reviewing different stacks for a project that will deal with a bigger quantity
of users and I would really like to use Laravel, does Laravel have some
performance issues or similar stuff when dealing with lot of users?

~~~
garymoon
Thanks for the feedback, I will test Lumen

~~~
grandbestmaster
Try out slim 3!

------
GvS
Django (with REST framework and Postgres) + Angular 2 works best for me

------
joshiej
LAMP anyone?

~~~
caleblloyd
Great stack. I prefer to rock NGINX instead of Apache these days, which they
call "LEMP".

~~~
ausjke
Isn't nginx for static pages mostly, and it proxies load-balance/dynamic-
content to other servers behind, will LEMP make development less
straightforward comparing to LAMP? I'm actually using lighttpd these days due
to its light-weight, and dynamic/static page support all-in-one.

~~~
caleblloyd
Correct, you can't run PHP inside the NGINX process like Apache can with
mod_php. You have to run a PHP service listening for Fast CGI connections and
configure NGINX to proxy via FastCGI to that service. The `php-fpm` package on
Linux makes this easy to do.

------
garymoon
while True the javascript framework I created this morning, which I think is
better than others

------
amingilani
Quick question: authentication for restful APIs that are frontend agnostic.
Any recommended readings?

I've used third party libraries like devise_token_auth and I understand how
JWTs work but is there a standard? Oauth2 maybe? I sound like I'm lost because
I am. I still don't "get" authentication. The Oauth2 RFC confused me. Is there
a dummy friendly tutorial on rest API authentication that also supports
invalidating user sessions (unlike JWTs)

------
holydude
Sorry to hijack your topic. What is the most popular technology stack in terms
of amount of jobs available on the market ? (world wide). Make a wild guess i
do not need exact numbers.

Java and or JavaScript ?

------
coldcode
Which day? Just reading the comments shows a wide variety of options, so how
do you determine popularity? I remember at my employer going through gyrations
to determine the best popular JS framework about 4 yrs ago. None of the
finalists even exist today. Whatever decision you make today, always plan to
change everything even if you don't: you can't predict where your choices will
go.

------
pahaat
I'm currently getting used to Node.js

Just bought "Getting Mean with...", which describes a MongoDb, Express,
Angular and Node stack. (IMHO) However, first of all, the book is a waste of
time and angular sucks.

So in the end, I'm planning my upcoming project using Node, Express, CouchDB
and plain ol' static pages with a slice of ECMAScript (yah... I admit,
Bootstrap and jQuery will join the party).

------
hawkice
Phoenix/Postgres.

If a project doesn't need a backend (boy howdy do I love keeping things in
localstorage), Elm. I keep meaning to use Phoenix and Elm together but it
never seems like the thing to do. I do love Elm a lot, though, I have a couple
dozen widgets and what-have-yous written in it, and it's my preferred
prototyping / build it in anger toolset.

------
juliangoldsmith
One a recent project, I've been using Golang with unrolled/render,
julienschmidt/httprouter, and jmoiron/sqlx. I kind of wish I'd gone with
something like Buffalo, but not using a framework has forced me to learn a
lot, so I'm glad I didn't.

The application itself is hosted on a VPS running Arch Linux, behind nginx,
and uses Postgres with PostGIS for a database.

------
vegancap
I've been pretty happy with Go (no framework), React/Redux/Webpack, Mongo for
loose data, Postgres for relational data.

------
jamesmp98
You want a hipster stack

GraphQL / Couchbase / Node.js / React / Redux

Personally, though, I am a fan of ASP.Net Core + Angular 2,

------
bharani_m
I am building my side project, Email This [0] with Elixir and Phoenix. Not
using any JavaScript framework here, but I've dabbled a bit with React and
Vue.js.

Rails (Ruby) and Laravel (PHP) are some of the other solid options for
building the backend.

[0] [https://www.emailthis.me](https://www.emailthis.me)

------
crisopolis
Also have a hipster/trendy stack...

Backend: Elixir (using Maru [it's like Ruby's Grape])

Database: PostgreSQL

Frontend: Vue.js or Elm (maybe)

------
jagger27
Go / TypeScript@Node on the server, Angular 2, and whatever DB suits the job,
none if possible.

------
JoelSanchez
I'm playing with Clojure/ClojureScript/Reagent/Datomic and liking it so far.

------
owebmaster
ClojureScript, reagent, re-frame

------
nullmage
I'd like to throw in ArangoDB (multi-model NoSQL database) which I switched to
after RethinkDB was shut down.

[https://www.arangodb.com/](https://www.arangodb.com/)

~~~
k__
Does it have change feeds?

I'm using RethinkDB right now, but I would probably switch back to Postgres if
I had to use something that didn't have change feeds.

------
ausjke
nobody mentioned MEAN stack? I don't really like the M(mongodb) part though,
looking for a backend framework and checking nodejs/express now, something
like: Vuejs + Express + NodeJS + someDatabase

------
grandbestmaster
Vue.js is just amazing.

------
erikrothoff
We're using Ember.js frontend with a Google Cloud Platform backend. It's like
following all the latest JS trends with 100% less javascript fatigue.

~~~
sidcool
What exactly on GCP? Firebase?

------
raleigh_user
Roll with flask or Hapi JS. Angular 1 front end (been meaning to switch to
react). Postgres, rethinkdb, or mongo depending on needs.

------
lisperforlife
PostgreSQL, Go micro-services, kubernetes based deployment and isomorphic
React (Webpack, hot loading, ES6) frontend.

------
alex_duf
Play framework. I'm a big fan of it

~~~
aryamaan
Can Play be used with Maven?

What all things Play provide?

------
adelarsq
Someday Rust for backend will be here :)

------
romanovcode
Backend: ASP.NET Core, Laravel, Koa

Frontend: Angular/React

What is _NOT_ popular anymore: RoR, Angular1, Express

------
leo_mck
asp.net core, aurelia (with typescript) on the frontend and just starting to
throw graphQL on the mix. To me, web development never felt so easy and
refreshing.

------
bandrami
I use GNU Artanis, but I'm definitely an outlier

------
ma2xd
Using Django/DRF/Postgres and Angular2.

------
1_listerine_pls
ssh, bash, vim and .csv, on top of UNIX.

------
pplonski86
Django + Django Rest Framework + AngularJS

------
UK-AL
Currently converting from .Net to .Net core

~~~
awgneo
There are just far too many better choices out there (Elixir, Phoenix) for me
to ever consider going back to Microsoft technologies. I still haven't
forgotten their ASP.Net MVC framework that nearly made me give up being a
developer.

~~~
UK-AL
ASP.NET MVC is pretty much a clone of any service MVC framework(django,
rails). I don't see the problem with it.

~~~
brianwawok
Well you are letting Microsoft rule your life. Could go really good or could
go really bad. With Django you have an actual community that drives the
project.

~~~
flukus
dotnet core has a community driving the project. As for giving up being a
developer, why? It's simple, straight forward and has never been frustrating
to me.

~~~
fatso83
Ditto. Have used LAMP, JEE, Rails, Grails, ASP.NET MVC, Meteor ande
Express.js. ASP.NET MVC is _fine_ and has decent performance. ASP.NET on .NET
Core blows pretty much everything else out of the water performance wise, but
there's more to life than performance. ASP.NET Core being open-source and
running fine on Linux and Mac helps, though.

------
debarshri
Go with go-kit and react.js for front end.

I find then pretty productive and quick to get started with.

------
krasicki
Polymer

------
FloatingGhost
I'm using LAMoPy - Linux, Apache, Mongo, Python (flask)

I don't buy into the whole Node.js thing, I much prefer the stability and
maturity of apache. Mongo just because it's easy to use with python, and
python because I love it <3

~~~
dugword
Node.js would not replace Apache in that stack, it would replace Python
(flask).

Apache is for static content and to act as an HTTP proxy for managing
connections.

You can, and should, put Apache (or Nginx) in front of a Node.js web service.

