Web chat app with socketIO project by Dhiraj Deb and Bhumika Bhatt

AttainU
AttainU

Web chat app with socketIO

Introduction
Hello, my name is Dhiraj Deb, I am from Agartala, Tripura. I am doing full stack web
development course at AttainU. For our backend project we have created a web chat
application, where users can do group chat and also share file.

What is the project?
We have created a web chat application using web socket technology, where users
can create an account and join a room for group chat. They can also share files and their
current location.

Why did we choose this project?
We basically choose this project because the account creating part and the profile
management part covers all our CURD operation. There is also file uploading from client to
server and server to cloud, for which we used the cloudinary platform. One more benefit
we got creating the project is knowing about the web socket technology.

What are the technologies we use?
So basically for the backend part we used the Node js and the server module we used is
express js. Express js is a middleware driven, lightweight, fast and easy to use npm module for
Node js. We have used the passport js npm module for our login part, using platforms like Facebook
and Google. There are also other npm packages we used like express-validators for validation
purpose, express-flash for flash messages etc.
For the web socket connection we used a very handy npm package called socketIO.
For sending the email, we have used the Sandgrid email service, which also has an npm
module.

For the database part, we have used both the SQL and NoSQL database. For SQL database,
we used the PostgreSQL, as it is a lightweight, fast and easy to use SQL database and for the
NoSQL database, we used the mongodb, as the schema design of mongodb is very easy and no
there are no restriction.

For our frontend part, we used some online template for our HTML, CSS and Javascript to
show the UI to the user, mostly for the chatroom UI. For our other pages like registration page and
login page, we used the view engine ejs.

What are the issue we faced?
The main challenge was for us to connect the backend part with the frontend part, mainly the
web socket part. As we did not complete our frontend part yet, it was little tough for us to
understand the template that we used for the web socket part and implementing our own functions
to it.
To overcome the situation we took help from our mentor and read articles about the web
socket and watched few videos, which ultimately helped us to understand the web socket process
and at the end we could implement most of the features we wanted to implement if not all.

What improvement can be done on the project?
We most of the improvement we can do in the frontend part to make it more attractive. In the
backend part we can add few features that we can add -
1. Resend email verification if the user didn’t get the email.
2. Forgot password option in the login screen, so that the user can reset his password without
login in in case he forgot his password.
Apart from that we can add new features what can make our application more useful to other areas,
like send payment, password protected chatroom, admit support, one to one chats etc.

DEMO :