Starting to build a web app is always an interesting project. It is fun to work on your awesome ideas that provide solutions to SMEs or create your own SAAS. A smartphone is essential for most adults, including students, to attend classes online via Zoom or any meeting tools.
Before we start working on our ideas, we will be having tons of discussions. One of the major topics would be, the technical discussion, what technical stack we should be working on. There are a few things to consider when deciding which stack to work on.
Documentation

The official documentation for every framework or tool is essential to influence developers to use it. If the documentation is rich, contentful, and easy to understand, It will gain more focus in no time. However, if the documentation is rather confusing or not up to date, that is a bad sign for a tool. Neither of us want to use something that is deprecated or abandoned to build a new product.
Popularity

The term popularity here does not refer to the number of developers using it. It is more like the popularity among technologies, meaning the acceptance from others; for example, do major Cloud Service giants like AWS/GCP/Azure support it? It is possible, and we will face an uphill challenge from the beginning when it is not majorly acceptable.
Community

Another point we need to look at is the community size. Just imagine, when you try to ask a question in Stack Overflow, but it stays unanswered for a week. How would you feel? Most likely depressed with no one but yourself to rely on and that's a shame. However, if the community is big and there are many people using the same tools as you, you will definitely get much more help from others.
Growth

The last major thing we need to consider would be the growth of the tools. Are we expecting the tools to improve for the next five to ten years; Or will it be obsolete, or is it deteriorating? As we always expect our product to have room for improvements, we should choose tools that have much better support from the tools themselves.
There are a few famous stacks around like the LAMP (Linux, Apache, MySQL, PHP) stack, MEAN (Mongo, Express, Angular, and Node) stack, MERN (Mongo, Express, React, Node) stack, Ruby on Rails, but we now have a new kid in town, the GRAND (GraphQL, React, Apollo, Neo4j Database) stack.

GraphQL is a query language for APIs to retrieve data, open-sourced by Facebook. It is a tool that allows the consumer to request the data explicitly.
GraphQL comes in handy when the consumer needs to consolidate various data from different tables or databases. It allows the consumer to retrieve data in a single query, based on the query, instead of based on what the endpoint is providing, saving the consumer from making multiple HTTP calls.
Since the consumer decides the data schema, GraphQL also eliminates the need for versioning. GraphQL also comes with an explorer, which is similar to Swagger for REST API. To compare GraphQL with the REST endpoint, we have an article that discussed the differences.

React is currently one of the most popular Javascript frameworks, which is also open-sourced by Facebook, with 173k stars on Github, coming second to VueJs at 187k and Angular at 75.7k stars.
React comes with a huge advantage where it is considered a Javascript library instead of a framework, meaning that React can fit into any javascript-based web framework. React is component-based, which enables it to manage its own state.
Also, it is sharing the same language with React Native, which is used to create cross-platform mobile apps. React is a mature library, where there are many huge web apps developed using React, such as Facebook, Instagram, Netflix.
There are also tons of community and paid resources we can use on the fly from sites like Bit.

Apollo is a state management library for Javascript, which helps us to manage the states in the frontend applications. It has a handful of features that are seamlessly working with GraphQL. In addition, it has an explicit React client, which makes the pair a formidable technology stack. It supports major React features such as React Hook, where React Hook is one of the most popular state management implementations.

Neo4j Database might sound new to people. It is a graph database, where the data is store in nodes instead of tables. However, there is an interesting point for Neo4j Database. It uses relationships to connect nodes, comparable to join tables like SQL or storing all data in one single flatten document like NoSQL.
Thus, it simplifies the relationships between data and, in a way, is easier to query. Neo4j uses Cypher query language, a unique GraphQL query language, to perform GraphQL operations such as query and mutation. While Cypher is based on the usage like SQL, Cypher is designed to write in a self-explained query, which is close to human-readable.