This is the client of a chat application, built by React framework of javascript. It communicates with the server located here using HTTP and Websocket protocols. The communication through Websocket is performed using instances of the library socket.io both in the client and the server, and thus real time updates between clients connected to the server are possible. The data fetched from the server in the client is managed using Redux store, which is accessible to multiple components in the application, what makes it reactive. The following actions are supported in the client:
- Signing up and logging in to the application
- Send and receive text messages in private chats of 2 users, and group chats with multiple participants, all in real time.
- View chats partner connection status
- View chats partners details
- View user's groups details
- Create new groups
- Adding new members to groups and informing them in real time
- Removing members from groups by its admin and informing them in real time
- Closing a group, meaning no messages can be sent in it anymore. The members are informed about the closure in real time.
- Self exit from group of a member
- Block and unblock users and informing them in real time
Below is a high level diagram of the client:

This is a detailed hierarchy of the components:

Clone down this repository. You will need node and npm installed globally on your machine.
Installation:
npm install
npm install react-router-dom
npm install @material-ui/core
To Start Application:
npm start
then run the URL http://localhost:3000/