Make chat

const express = require('express'); const mongoose = require('mongoose'); const socketio = require('socket.io'); const nodemailer = require('nodemailer'); const bcrypt = require('bcryptjs'); const app = express(); // Database setup mongoose.connect('mongodb://localhost:27017/chatApp'); const User = mongoose.model('User', new mongoose.Schema({ email: { type: String, unique: true }, verificationCode: String, verified: Boolean })); const Message = mongoose.model('Message', new mongoose.Schema({ sender: String, receiver: String, message: String, timestamp: { type: Date, default: Date.now } })); // Email configuration const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'your-email@gmail.com', pass: 'your-email-password' } }); // Middleware app.use(express.static('public')); app.use(express.json()); // Routes app.get('/', (req, res) => { res.send(` Chat App
`); }); app.post('/api/send-verification', async (req, res) => { try { const { email } = req.body; const code = Math.floor(100000 + Math.random() * 900000).toString(); const hashedCode = await bcrypt.hash(code, 10); await User.findOneAndUpdate( { email }, { verificationCode: hashedCode, verified: false }, { upsert: true, new: true } ); await transporter.sendMail({ to: email, subject: 'Verification Code', text: `Your verification code is: ${code}` }); res.status(200).send('Code sent'); } catch (error) { res.status(500).send('Error sending code'); } }); app.post('/api/verify', async (req, res) => { try { const { email, code } = req.body; const user = await User.findOne({ email }); if (user && await bcrypt.compare(code, user.verificationCode)) { user.verified = true; await user.save(); res.json({ success: true }); } else { res.json({ success: false }); } } catch (error) { res.status(500).json({ success: false }); } }); const server = app.listen(3000, () => { console.log('Server running on port 3000'); }); const io = socketio(server); io.on('connection', (socket) => { socket.on('sendMessage', async ({ sender, receiver, message }) => { const newMessage = new Message({ sender, receiver, message }); await newMessage.save(); socket.to(receiver).emit('receiveMessage', newMessage); }); socket.on('join', (email) => { socket.join(email); }); });

Comments

Popular posts from this blog

YouTube video downloader

The Pahalgam Terror Attack: A Tragic Incident Shaking Kashmir