https://github.com/ajaykumar2pp/chat-app-nodejs
A feature-rich real-time chat application.
https://github.com/ajaykumar2pp/chat-app-nodejs
expressjs githuboauth google googleoauth2 moment mongoose nodejs socket-io
Last synced: 3 months ago
JSON representation
A feature-rich real-time chat application.
- Host: GitHub
- URL: https://github.com/ajaykumar2pp/chat-app-nodejs
- Owner: ajaykumar2pp
- Created: 2024-12-30T03:43:38.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2024-12-30T03:57:56.000Z (5 months ago)
- Last Synced: 2025-01-07T16:14:45.520Z (4 months ago)
- Topics: expressjs, githuboauth, google, googleoauth2, moment, mongoose, nodejs, socket-io
- Language: EJS
- Homepage:
- Size: 1.56 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## 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
| Technology | Description |
| ----------------- | --------------------------- |
| 📦 **NPM** | Dependency management |
| ⚛️ **EJS** | Templating engine |
| 🟢 **Node.js** | Backend runtime environment |
| ⚡ **Express.js** | Backend web framework |
| 🔑 **Passport.js** | Authentication middleware |
| ✉️ **Nodemailer** | Email Service for password reset |
| ⚡ **Socket.IO** |Real-time communication |
| 🗄️ **MongoDB** | NoSQL Database for user data |## 🚀 Installation and Setup
1. Clone the repository:
```bash
git clone https://github.com/ajaykumar2pp/Chat-APP-NodeJS
```
2. Navigate to the project directory:
```bash
cd chat-app-nodejs
```
3. Install dependencies:
```bash
npm install
```
4. Set up environment variables:
```bash
DATABASE_URL=mongodb+srv://:mongodb.net/USER_AUTH?retryWrites=true&w=majority
JWT_SECRET=themyscret
GOOGLE_CLIENT_ID=**6444762183-***************************.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-VGOKmLZdJx2oJ2WxON_***********
[email protected]
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:
```bash
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 Method | Endpoint | Description |
|--------------|---------------------------|------------------------------------------------|
| `GET` | `/register` | Displays the registration page. |
| `POST` | `/register` | Registers a new user. |
| `GET` | `/login` | Displays the login page. |
| `POST` | `/login` | Logs in the user. |
| `GET` | `/google` | Initiates Google OAuth. |
| `GET` | `/google/callback` | Google OAuth callback. |
| `GET` | `/github` | Initiates GitHub OAuth. |
| `GET` | `/github/callback` | GitHub OAuth callback. |
| `GET` | `/private-chat` | Private chat dashboard |
| `GET` | `/forget-password` | Displays the forget password page. |
| `POST` | `/forget-password` | Sends reset password email. |
| `GET` | `/check-email` | Prompts user to check email for reset link. |
| `GET` | `/reset-password/:token` | Displays the reset password page. |
| `POST` | `/reset-password/:token` | Resets the user password. |
| `GET` | `/success` | Displays success page. |
| `GET` | `/logout` | Logs the user out. |## 📷 Screenshots
## 🛡️ Security
- Encrypted passwords using bcrypt 🔒.
- Secure OAuth flows with Google and GitHub.
- Environment variables stored securely with dotenv.## 📞 Contact
- 👤 Author: Ajay Kumar Prajapati
- 📧 Email: [email protected]
- 🌐 Github: https://github.com/ajaykumar2pp