The choice of the technologies is affected by both the skills and abilities of the team, and their suitability for the project. A technology stack based on JavaScript is the team’s preference, which is also supported by the fact that JavaScript was the most popular programming language in 2017 according to Stack Overflow Trends [1].
MEAN stack
More specifically, the web application will be developed as a single-page application connecting to a RESTful API, with a framework like AngularJS for the front-end and a Node.js server with the Express.js web framework for the back-end. Even the mobile application can be developed with a JavaScript framework like Mobile Angular UI. As for the database the conventional option for a JavaScript teck stack is a non relational database like MongoDB or Firebase, because of the common data format, JSON, there is no need for an extra layer of object relational mapping between the application and the database server. This set of JavaScript technologies are usually combined and they are known as the MEAN stack (MongoDB – Express.js – AngularJS – Node.js).
Sticking to the same programming language and framework simplifies the development, because when it’s needed, let’s say, a front-end developer can switch faster to a task related to the back-end of the project, without having to spend much time in learning a new technology.
Chat Functionality
To develop the chat functionality real-time bidirectional communication between server and client is required. Socket.io is a JavaScript framework which is available as a package for Node.js and provides this ability.
Especially for storing and serving chat related data, the best option is the Apache Cassandra NoSQL database. Apache Cassandra has no single point of failure and guarantees that the service will be available at all times, also it has the best scaling performance among the rest of of NoSQL platforms [2].
[1] “Stack Overflow Developer Survey 2017,” Stack Overflow. [Online]. Available: https://insights.stackoverflow.com/survey/2017#most-popular-technologies. [Accessed: 23-Apr-2018].
[2] Cassandra System Properties. [Online]. Available: https://db-engines.com/en/system/Cassandra#a34. [Accessed: 23-Apr-2018].