Ask HN: What frameworks are currently used in a modern web stack?

78 points by debt ↗ HN
I'm curious which tools and frameworks are popular amongst today's web developers.

124 comments

[ 3.7 ms ] story [ 213 ms ] thread
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

Apache, stable, mature... doesn't work. Have you ever wondered why "Apache" is named like that?
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.

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.
I didn't know the website, thanks!
while True the javascript framework I created this morning, which I think is better than others
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++.
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.

Did GraphQL fix the authorization problems? Locking resources and attributes to authorised users?
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.

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

No more than HTTP or SQL fixes these problems on their own.
I do auth with a simple Ajax form and make all of my graphql calls take an auth header. Auth is really somewhat orthogonal to graphql. You can do it with graphql or not, up to you.
Do you have any example projects or resources you used for getting everything working together nicely? I have tinkered with that setup a bit but haven't come up with something I love yet.
there is an idea for a joke-site slash kafkaesque sadomasochistic torture challenge generator. Hipster Stack Generator.

>Phoenix Absinthe Vue.js TypeScript Apollo Ethereum

(comment deleted)
What color are your socks?
Graph based on Github and Stackoverflow data.

http://hotframeworks.com/

Interesting that Bootstrap/Foundation/Semantic UI isn't up there. Is it because they only handle the front-end interface?
LAMP anyone?
symfony / react + docker for spawning containers for each service
Great stack. I prefer to rock NGINX instead of Apache these days, which they call "LEMP".
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.
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.
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.
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.

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.

(comment deleted)
Also, Sails.js is the worst framework I've ever worked with. Never, ever use it.
I started backend development with Nodejs because I was familiar with JavaScript. I dropped sails after a month because of the lack of documentation and help available when something went wrong.

A few months later I happened to try Rails and realized that that was what Sails was trying to be for JavaScript. At some point Sails will become awesome, but until then I'll stick with Rails.

Go / TypeScript@Node on the server, Angular 2, and whatever DB suits the job, none if possible.
I use GNU Artanis, but I'm definitely an outlier
That article is a sarcastic joke about JS frameworks. I would not recommend it as a learning resource.
Grails(https://grails.org/) if you want "rails" in the java world
Including DB migrations. I don't know if I could ever go back to working with SQL directly after using GORM.
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.
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.

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.

What's hard about building and deploying .net applications? Currently use octopus, which probably one of the best deployment experiences.

.Net core runs on linux, so you don't even need a windows server.

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.

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

I am a unix a guys that recently moved to a MS wonderland. I have to tell you Windows Server and the tooling feels much more polished than Linux and the mess around it. And powershell...powershell is kind here.
Not really, at this point of time I just love that it's now possible to write a code, run and debug my project in both of Windows and Mac OS, that's a huge step forward.
I'm in the middle of a project that uses.NET Core. It's been great so far but Microsoft is in the middle of changing the tooling for it, which is a major pain point right now. They are essentially changing the project file format that defines dependencies and build options, and SDK tools and IDEs don't all support both formats yet.

.NET Core has almost all of the features of the full .NET framework and C# is a pleasure to work with. My team is very productive and we are able to iterate very quickly. Since it is a compiled language, most errors are caught at build time.

Deploying is another pain point. You have to install the framework on Linux and ship all of your dependencies. They make it easy with the `dotnet publish` command. I'm excited for .NET Native which will package everything into a binary.

Do you experience any obstacles with data providers implementation in .NET Core? I heard that they ported SQLDataProvider only.
Yes, we did experience obstacles. I wanted to use MySQL for our project and there was no GA Entity Framework implementation when we started. Oracle is way behind the ball on an official driver and their license (GPLv2) is super restrictive. I found `Pomelo.EntityFrameworkCore.MySql` to be a pretty good implementation and started contributing. We ported it to use `MySqlConnector` as a base MySQL driver. Both libraries have matured a lot, are MIT Licensed, optimized for performance, and are now used in production.

I think that PostgreSQL has a similar open source story. There's `Npgsql` for a driver and `Npgsql.EntityFrameworkCore.PostgreSQL` for the Entity Framework implementation.

It took some work, but I like that Entity Framework Core allows for it's implementations to be done by the Open Source community. In MySQL's case, we've added lots of MySQL-specific optimizations to the Entity Framework implementation after getting feedback from the community. The new open Microsoft development approach here is great.

ASP.NET Core is not sure if you're trolling or just a fan :-o
I am not trolling AND I am a huge fan of .NET :D
JavaEE as well, believe it or not. Micro profile is the currently cool thing now (since Java One last year) it seems.

Full disclosure: primarily a Java dev but have worked in PHP, and to a lesser degree python as well. Oh, and I now work full time on .Net.

Which framework do you use to make microservices in Java?
I'd just use JavaEE, web profile or possibly even Micro profile although that isn't released yet.
Laravel, Nginx, PHP 7.0 and Postgres/MySQL.
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?
I've never had performance issues with Laravel, but if performance is very important for you, Laravel has a microframework called Lumen:

https://lumen.laravel.com/

I've never experienced performance issues due to users. I run https://styleci.io and we're absolutely fine dealing with thousands of users.

If you're running jobs, be sure to do so on the queue.

I still love Django. With vue.js in the client where necessary.
Vue + django rest framework seems to be a sweet spot for single page apps at the moment.
No love for Django? Django/Postgres
I used Django a few years back for a large project that involved facility management. It was a breeze to work with. The Django Admin functionality alone saved us weeks of work.

That was version with 1.3! I wonder what the current state of the framework is. I need to get back into writing Python and using Django

Admin is the killer feature of Django.

A close second is the world's easiest ORM.

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/

I'm a Django guy myself but I'm always curious what people are using.
Im a java dev and done a django side project last year - loved it.

Wish i could get the same money for django as i could for java and id switch today

I have gone through work using Codeigniter, Laravel, Spring then Django. Django was very easy to learn coming from Laravel and has lot les boilerplate than Spring. Never going back!

Maybe it is just hype but I am trying out Elixir. I am interested in the functional programming too so its a win -win for me.

(comment deleted)
Phoenix/Elixir/Vue.js/Postgresql is a very strong/efficient stack IMO these days.
Django (with REST framework and Postgres) + Angular 2 works best for me
I've been pretty happy with Go (no framework), React/Redux/Webpack, Mongo for loose data, Postgres for relational data.
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.
Someday Rust for backend will be here :)