Skip to content

Repository files navigation

Chat Message App 🚀

A feature-rich authentication via Google and GitHub OAuth, real-time chat application built using Node.js, Express, Socket.IO, MongoDB, and EJS for templating. The application supports real-time messaging, typing indicators, and persistent chat history.Additionally, it provides a user private-chat dashboard

🌟 Features

  • 🔒 User Registration and Login
    • Traditional email and password authentication using Passport.js.
  • 🌐 OAuth Integration
    • Google and GitHub authentication support.
  • 📧 Forget Password Flow
    • Reset your password securely via email.
  • 🛠️ Protected Private-Chat
    • Accessible only to authenticated users.
  • 🔗 Real-Time Messaging
    • Send and receive messages instantly using Socket.io.
  • 👥 User Management
    • View active users and their count.
  • 📜 Persistent Chat History
    • Retrieve stored messages from the database.
  • ⌨️ Typing Indicators
    • Know when another user is typing.
  • 🖼️ User Profiles
    • Includes user avatars and display names.
  • 📱 Responsive Design
    • Built using EJS and Bootstrap for a modern, adaptive interface.

🚀 Tech Stack

TechnologyDescription
📦 NPMDependency management
⚛️ EJSTemplating engine
🟢 Node.jsBackend runtime environment
Express.jsBackend web framework
🔑 Passport.jsAuthentication middleware
✉️ NodemailerEmail Service for password reset
Socket.IOReal-time communication
🗄️ MongoDBNoSQL Database for user data

🚀 Installation and Setup

  1. Clone the repository:
    git clone https://github.com/ajaykumar2pp/Chat-APP-NodeJS
  2. Navigate to the project directory:
    cd chat-app-nodejs
  3. Install dependencies:
    npm install
  4. Set up environment variables:
    DATABASE_URL=mongodb+srv://<username>:<password>mongodb.net/USER_AUTH?retryWrites=true&w=majority
    JWT_SECRET=themyscret
    GOOGLE_CLIENT_ID=**6444762183-***************************.apps.googleusercontent.com
    GOOGLE_CLIENT_SECRET=GOCSPX-VGOKmLZdJx2oJ2WxON_***********
    EMAIL_USER=abc@gmail.com
    EMAIL_PASS=tsqp ******** jeym
    GOOGLE_CALLBACK_URL=https://abc-coder-in.onrender.com/auth/google/callback
    GITHUB_CLIENT_ID=Ov23li8zO2Uw8c7******
    GITHUB_CLIENT_SECRET=ab882befa44617**********56695388fd7d1b07
    GITHUB_CALLBACK_URL=https://abc-coder-in.onrender.com/auth/github/callback
  5. Start the development server:
    npm start

📁 Project Structure

Multi-Authentication/
src/
├── config/ # Configuration files
│ └── db.config.js # Database connection configuration
│ └── nodemailer.js # Email service setup
├── controllers/ # Route controllers
│ └── userController.js # Controller for authentication-related logic
├── middlewares/ # Custom middleware
│ └── auth.middleware.js # Middleware for authentication and authorization
├── models/ # Database models
│ └── user.model.js # User schema and model definition
├── passport/ # Passport.js strategies
│ └── passport.js # Passport-Local, Google & GitHub strategies
├── routes/ # Application routes
│ └── userRoutes.js # Routes related to authentication
├── views/ # EJS templates
├── .env.example # Sample environment file
├── index.js # Main entry point for the server
├── package.json # Project configuration
├── README.md # Documentation

🚦 API Endpoints

HTTP MethodEndpointDescription
GET/registerDisplays the registration page.
POST/registerRegisters a new user.
GET/loginDisplays the login page.
POST/loginLogs in the user.
GET/googleInitiates Google OAuth.
GET/google/callbackGoogle OAuth callback.
GET/githubInitiates GitHub OAuth.
GET/github/callbackGitHub OAuth callback.
GET/private-chatPrivate chat dashboard
GET/forget-passwordDisplays the forget password page.
POST/forget-passwordSends reset password email.
GET/check-emailPrompts user to check email for reset link.
GET/reset-password/:tokenDisplays the reset password page.
POST/reset-password/:tokenResets the user password.
GET/successDisplays success page.
GET/logoutLogs the user out.

📷 Screenshots

Chat-APP-12

🛡️ Security

  • Encrypted passwords using bcrypt 🔒.
  • Secure OAuth flows with Google and GitHub.
  • Environment variables stored securely with dotenv.

📞 Contact

About

A feature-rich real-time chat application.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages