What is a tech stack?
A tech stack is defined as the set of technologies an organization uses to build a web or mobile application. It is a combination of programming languages, frameworks, libraries, patterns, servers, UI/UX solutions, software, and tools used by its developers.
|Angular||8,0||Open source||One of the two most popular JS frameworks in a world. So no issues with finding someone who will understand.|
Angular is suitable for both web and mobile development. In mobile development, however, a great share of work is done by Ionic.
Angular is a full-fledged framework for software development, which usually does not require additional libraries. All the above-mentioned functions – data binding, component-based routing, project generation, form validation, and dependency injection – can be implemented with the means of Angular package. As a results you have less flexibility, but you don't need to think about which libraries to choose for certain critical features
Two-way data binding means a less complicated data flow and less code, but it could also move components into undesirable states if data is being propagated from multiple sources.
|Angular itself is a huge library, and learning all the concepts associated with it will take much more time than in the case of React. Angular is more complex to understand, there is a lot of unnecessary syntax, and component management is intricate. Some complicated features are embedded into the framework core, which means that the developer cannot avoid learning and using them. |
Angular is a bit old fashioned. In order to create something, you need to understand the concept of modules, events, subscriptions, observers, dependency injection and typescript. While I'm a big fan of TypeScript myself, integrating TypeScript to React gives me much better results compared to Angular.
You'll need to learn TypeScript, directives, modules, decorators, components, services, dependency injection, pipes, and templates.
|React.js||16,12||Open source||The most popular JS library in a world for front-end development. So there are no issues with finding someone who will understand the library or can quickly get it. |
The learning curve for React is fast and easy for someone who already knows how JS fundamentals
React allows you to create something that runs much faster (because of virtual dom) and it allows you to use your existing knowledge of HTML/CSS.
React is used in both web and mobile development. The most popular framework for mobile development is to React-native
New updates of React is going to make it much better. Hooks pretty much fixes all the quirks you had before, and concurrent mode makes the application much faster.
|The only downside of React is that, since it is very easy to pick up, anyone can create something. If the architecture of the project is not created by someone who has experience, it may be hard to maintain in the long run. However, the similar scenario also applies to Angular, only a bit less because Angular kind of gives you a basic architecture to start with. React is like a blank page.||Having experience in both frameworks, we can honestly tell that React is the future. Popularity of React keeps growing while Angular keeps going down. This is also visible on some custom frameworks such as Ionic. They initially started with Angular, but they started switching to React.
In today's world, I would suggest React as the base framework for any project. I would stay away from Angular unless they make some drastical changes in the upcoming versions that can compete with React.
|Python / Django||3.8.1 / 3.0.2||Open source||The most popular framework, template based by default, but can be easily modified to REST API. Has andmin part, ORM and migrations out of the box, and a huge amout of third party plugins. Designed to work with RDBMS. Perfect for database-centric apps which are mostly focused on CRUD operations.||Can be customized to certain limits only, pure support of NoSQL databases.|
|Python / Flask||3.8.1 / 1.1.1||Open source||Lightweight and minimalistic framework, easily customisable for every need. Has dozens of third party plugins for almost all purposes.||Third party libraries required for almost every project. Each project should be designed from scratch.|
|Python / aiohttp||3.8.1 / 3.6.2||Open source||Performance focused asyncronous framework. Provides about the same amount of featuers as Flask, but has less framework specific plugins. Can hadle huge amount of requests per second. No additional soft required to run the application||Third party libraries required for almost every project. Each project should be designed from scratch. Has less plugins than Django or Flask.|
|Ruby on Rails||5.2||Open source||- convention over configuration philosophy. rails framework is designed around this philosophy. it means everything works in default settings out of the box. and default settings is most of the time what developers want. and if they don't want the convention they can configure the default behavior. this philishiopy not only in the framework itself but also widely adopted in the ecosytem. there are many gems(libraries) for ruby/rails projects that just works out of the box. it is possible to build an authentication system in couple hours with all the needed functionality thanks to this philosophy that ruby libraries/modules adopted. |
- It has a wide ecosystem and community. Good documentation, lots of books, articles and educational videos, screencasts.
- Ruby is a framework designed for developer happiness. It's syntax is highly readable and clean. Its core methods and libraries provide just the developers need. It is possible to do same work with less lines with Ruby compared to other languages.
- It is opinionated about how a web app should be structured and developed. So most of the rails projects follows similar patterns. That means a rails developer can adapt to a new rails project quickly.
- Ruby on Rails de-facto standard web framework for Ruby.
|- Ruby runtime is slower than similar platforms like Node.js, JVM etc.|
|PHP / Laravel||7.4.1 / 6.x||Open source||One of the most popular PHP web frameworks following the MVC design. Good documentation, powerful ecosystem. Laravel provides out of the box many mechanisms. There are elegant ORM, template engine (but is symfony template engine is better), authentication and sessions, routing, queue management, dependency injection, has built-in tool for command-line and many others. Also has support react.js and vue.js from the box. Via this framework can very fast build the big and safe application.||Facades and statics and this with good DI.|
|Node.js||13.7.0||Open Source||Non-blocking I/O model that works asynchronously. It can keep many connections at the same time, support WebSockets. Rich standard library, many external libraries and off-the-shelf modules. Node.js is rapidly improving and has many frameworks. |
- Fast and higly flexible.
|Node.js event loop and an asynchronously can be hard to understanding for good programing on this platform. |
-Not a framework itself, just a runtime environment. So it has many web frameworks.
-That causes a couple problems. First there is no fully-feauted framework that all nodejs ecocsystem accept and use. Everyone is using different frameworks. And harder to find someone who has experience with a specific framework.
-Second, significant amount of nodejs projects only use express, koa etc. which is micro frameworks for only covers some functionality of a web app needs. Other functionality needed in the app is done by additional packages. That creates structure, organization and architecture problems in the app.
-Same thing also makes the adoptation process harder for new developers in the projects.
- Doesn't have packages that just works out of the box. Most packages which is needed for web apps only provide basic functionality and leave most of the work to developer. So it takes more time to develop features.
|MySQL||Open source||Older solution, easier to manage than PostgreSQL.||Doesn't support modern SQL standarts|
|PostgreSQL||Open source||De-facto default RDBMS, fast and modern.||Has some horizontal scalability issues|
|MongoDB||Open source||Fast, document oriented, higly scalable||Expensive managed solutions|
|Data binding||2-way data binding||1-way data binding|
|Size||Quite large and since it needs to be shipped to the client side, it increases the initial load time||Quite small in size, especially when compared with Angular|
|Learning Curve||Quite steep, given the number of features and options you have in Angular||It’s easy to pick up and learn|
|Performance||Comparable to React, Angular 2 and 4 are some||Faster than Angular thanks to the Virtual DOM|
|Simplicity||Quite complex||Fairly simple but takes some time to set up a project and configure everything|
|Scalability||Easy to scale thanks to the power CLI and generation tools, It’s also used by many large companies||Fairly easy to scale and is quite testable which facilitates the scaling procedure|