A Real-Time Chat App with MERN and SocketIO

Chilly talk 🤗

Chat app / room

Realtime chat app for chilly talking, made for learning basics of full-stack 📖

Live demo

About The Project

I have decided to improve my coding skills to strengthen my fundamentals of front-end, react and styling also with exploring new trails and oh me it was great and horrible idea at same time. So I have decided to get into back-end development.. at least to understand basics. Finally I have decided to build real time chat application which will work like for example Messenger or Telegram.

This idea allowed me to obtain a huge amount of new knowledge and to spend many hours inside of docs.

Project allows the end User to register account, login, send messages, edit them and delete. Additionally allows user to style chat window uniquely for every logged in user.

🧰 Technologies

(back to top)

🏃 Getting Started

To get a local copy up and running follow these simple steps.

✋ Prerequisites

Necessary tools

Please at first follow these steps to install necessary tools. If you have already installed npm, Node and created free MongoDB account with initializing and configuring MongoDB database skip this step and jump to Installation.

  1. Install latest stable version of node from Official Site . It should also install the latest version of npm package manager.
  2. Verify versionos of installed Node and package manager.

    node -v
    npm -v

    Example output:

    v18.12.1
    9.1.2
  3. If npm isn’t installed, try to install it manually using the following command inside terminal:
    npm install -g npm
  4. Create free MongoDB account here.
  5. Initialize database and save connection URI string for later, for example:

    mongodb://myDBReader:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin
    (it's just an example of connection string)
    
  6. Configure access and network connection restrictions to database.

🧙‍♂️ Installation

Step by step

Server:

  1. Clone repository.
    git clone https://github.com/Arrugonoto/chat_app.git
  2. Inside of project main directory navigate to server folder.
    cd server/
  3. Inside of a server directory create .env file
  4. Configure .env file with necessary data:

    NODE_ENV=production // node development environment, currently set as production
    PORT=5000 // port on which server will be running
    MONGO_URI=mongodb://myDBReader:D1fficultP%40ssw0rd@mongodb0.example.com:27017/?authSource=admin  // example connection URI string
    SECRET=secret_key_example

    ⚠️ Remember! Never upload .env file to repository because it contains important configuration data and exposes them to be exploited.

  5. After finished configuration install necessary packages.
    npm i
  6. Run server.
    npm run dev

Client:

Open another command line/terminal.

  1. Inside of main project directory navigate to client folder.
    cd client
  2. Inside of a client directory install NPM packages.
    npm i
  3. Wait for the installation to complete.
  4. Run client
    npm start
  5. Done! Have fun with testing!

(back to top)

🛣️ Roadmap

Update:

  • Add login and register
  • Add message creation
  • Add message editing and deletion
  • Add menu
  • Add theme settings
  • Add jump to newest messages functionality
  • Add momentum scrolling functionality
  • Add ‘giving likes’ functionality / implemented reaction functionality
  • Add profanity filter – by Michael Price
  • Build production
  • Host project
  • Add emoji picker – by Missive team
  • Add light/dark mode

Fix:

  • Message editing
  • Custom color selector for theme
  • Theme font colors
  • Bugged display of longer message
  • Selecting emoji doesn’t works
  • Reactions are added to wrong message

Demo status:

  • Updated to latest version

(back to top)

🪧 License

Distributed under the GPL3.0 License. See LICENSE file for more information.

(back to top)

GitHub

View Github