What technology stack would I choose, if I had to develop a web application completely from scratch? That’s the question this article will cover. First of all: by saying web application I’m referring to something between a plain static HTML page and an entire . Basically, an application that fulfills a certain domain of tasks for the user and that requires the usual features like user management, a backend database, multiple UI views and controls, etc. The size of application I’m thinking of could be a browser-based chat app, password-manager or something similar. Neither too simple, nor too complex. Facebook Back to the topic. Choosing the right for a web app feels much like customizing a new PC or even a new car. There are nearly endless options to be weighed to finally pick a bunch of them for a new web application. This super famous article complains about the confusing and ever-growing, chaotic jungle of new JavaScript frameworks in an ironical way. Indeed, I hear similar arguments from many developers these days. Many of them claim that code quality was getting worse in the web and that every newbie JavaScript programmer threw out his own new framework on yet another .io domain. Although that might be true to a certain extent, I personally still like the great technological variety and innovation. I love to browse GitHub, Reddit, Hackernews and Co. to discover new cool libraries to try out in a project some day. And here’s what I would pick if I had to realize such a project right today and if there weren’t any restrictions. technology How it feels to learn JavaScript in 2016 Of course, the technology choice depends on the concrete project requirements to a certain extent, but not completely. Consequently, a new project is always a chance to try something new. ThoughtWorks just published their new , where they separate into categories , , and . Of course, -techs are not an option for new projects and I actually pretty much agree with their views on what has to be in the category. basically are things that are modern, but also well-established enough to avoid too much risk. -techs are more experimental and are the latest fancy s***, so to say. Since I’m extremely eager to try out new things, my stack would probably mostly consist of technologies from the last category. So what would my stack now look like? Actually, I couldn’t decide on one stack, but set up two: and . Additionally, I define their intersection as , which consists of fundamental tools etc. that both have in common. technology radar for 2016 adopt trial assess hold hold hold Adopt Trial assess the fancy one the super fancy one the base stack The base stack First of all, I’d use for version control, as code editor and for repository hosting and as build server. If I didn’t had to implement user management myself, I’d pick for that. For deployment, I’d use containers with on machines and if I needed multiple instances, would help me to manage them. As reverse proxy in front of the backend I’d choose since it’s extremely efficient, performant and has support. For bundling, would be my choice and task automation would be done using plain . For styling the UI, I’d simply use and . Git Visual Studio Code GitLab Auth0 Docker DigitalOcean Rancher nginx HTTP/2.0 Webpack npm scripts Bootstrap 4 SCSS The super fancy stack The key point here is that I’d want to abandon a traditional REST API in my project and use instead. The backend would be written in with as GraphQL implementation. I don’t know much about the latter one, yet, except for that it’s the de-facto GraphQL solution for Node. Why Node? Because it’s simply the best choice for the web (my view…). It’s performant, comfortable to develop and especially brings consistency by having JS in front- and backend. By always being quite up-to-date with the latest ES* features, Node doesn’t get boring. Since GraphQL is told to work best with other Facebook technology, I’d not be that experimental here and build the frontend on plus (which is still completely new for me). Database would probably be a (JSON everywhere!) with ORM. To put a cherry on the cake, I’d also introduce in addition. I haven’t worked with it much, yet, and I heard that it’s kind of mind-blowing in the beginning. However, I consider its concept to cover a large potential to manage consistency in my app. The last thing here is that I desperately want is ES6 syntax. It isn’t supported by the React compiler afaik (please correct me, if I’m wrong), so I’d use to have latest JavaScript features. If having to go mobile, would be the rational choice. GraphQL NodeJS Graffiti React Relay MongoDB Waterline Redux Babel React Native The fancy stack This stack differs from the in a few points. A key point is that it would not use GraphQL, but a good old REST API. This API would be written in , since I like the language — especially its efficiency and its good suitability for web development. More precisely, I’d use the framework. I’ve read the documentation and it looked incredibly powerful to me (in terms of both functionality and perfomance). . For the frontend I’m balancing between and . Angular 2 is guaranteed to work for any potential case, is extremely powerful and has great community- and library support. However, Aurelia look promising, too, and probably is even more clear and less boilerplate code. Consequently, I’d give it a try. But if having to go mobile, I’d still favor Angular 2, since it perfectly aligns with . super fancy stack Go Iris (EDIT: It’s not what it seems! Please see my comment below!) Angular 2 Aurelia Ionic 2 Two other options, which look really interesting to me are and . However, I’m not sure, if it’s a good idea to commit to only one comprehensive framework through the full stack. Meteor HorizonJS So these are my two alternative ways through the webdev jungle — btw, describes another one, especially for newcomer web developers. Sorry, that I haven’t justified all choices. Actually, as you probably know, if you’re a developer, subjective views like these often aren’t even based on pure rational considerations, but are rather emotional and spontaneous. this good article Please feel free to give me feedback on my tech stack of choice! Another framework I’d really like to try out is , because it claims to be extremely lightweight and performant. However, before using Inferno, one should probably be familiar with React, since it uses very similar concepts and syntaxes. EDIT: InfernoJS After having read and having done some further research on the Iris framework I really have to retract my above statement that I’d use it as a web backend. While it looks nice on paper, after diving a little deeper I really have to admit that it’d be morally tenable to support the authors of that project. So please forget about Iris and take a look at instead. EDIT 2: this article Beego Originally published at ferdinand-muetsch.de . is how hackers start their afternoons. We’re a part of the family. We are now and happy to opportunities. Hacker Noon @AMI accepting submissions discuss advertising &sponsorship To learn more, , , or simply, read our about page like/message us on Facebook tweet/DM @HackerNoon. If you enjoyed this story, we recommend reading our and . Until next time, don’t take the realities of the world for granted! latest tech stories trending tech stories