NeoMeet is a modern, real-time video conferencing application that enables seamless communication through high-quality video calls, screen sharing, and instant messaging. Built with React and Node.js, it provides an intuitive interface for hosting and joining virtual meetings with minimal setup.
- 🎥 High-Quality Video Calls - Crystal clear video and audio communication
- 💬 Real-Time Chat - Send and receive messages during meetings
- 🖥️ Screen Sharing - Share your screen with other participants
- 👥 Multiple Participants - Support for multi-user video conferences
- 🔐 Secure Authentication - User registration and login system
- 🌓 Dark/Light Mode - Toggle between dark and light themes
- 📋 Easy Meeting Access - Join as guest or registered user
- 🔗 Meeting Code Sharing - Copy and share meeting links instantly
- 📱 Responsive Design - Works seamlessly across devices
- ⚡ Real-Time Signaling - WebRTC with Socket.io for instant connectivity
React 19.2.0 – UI component library
Material-UI v7 – Component library for fast UI development
Socket.io-client – Real-time communication
React Router v7.9.4 – SPA navigation & routing
WebRTC – Peer-to-peer video & audio streaming
Node.js – JavaScript runtime environment
Express.js 5.1.0 – Web framework
Socket.io 4.8.1 – WebSocket communication
MongoDB – NoSQL database
JWT – Authentication tokens
bcrypt – Password hashing for secure login
ApnaVideoCall/
├── backend/
│ ├── src/
│ │ ├── controllers/
│ │ │ ├── socketManager.js
│ │ │ └── user.controller.js
│ │ ├── models/
│ │ │ ├── meeting.model.js
│ │ │ └── user.model.js
│ │ ├── routes/
│ │ │ └── users.routes.js
│ │ └── app.js
│ └── package.json
├── frontend/
│ ├── public/
│ │ ├── screenshots/
│ │ └── index.html
│ ├── src/
│ │ ├── contexts/
│ │ │ ├── AuthContext.jsx
│ │ │ └── ThemeContext.jsx
│ │ ├── pages/
│ │ │ ├── landing.jsx
│ │ │ ├── authentication.jsx
│ │ │ ├── home.jsx
│ │ │ ├── VideoMeet.jsx
│ │ │ └── history.jsx
│ │ ├── styles/
│ │ │ └── videoComponent.module.css
│ │ ├── utils/
│ │ │ └── withAuth.jsx
│ │ ├── App.js
│ │ ├── App.css
│ │ └── index.js
│ └── package.json
└── README.md
- Node.js (v14 or higher)
- MongoDB (local or MongoDB Atlas)
- npm or yarn package manager
- Navigate to the backend directory:
cd backend- Install dependencies:
npm install- Create a
.envfile from the example:
# Copy the example file
cp .env.example .env- Configure your environment variables in
.env:
# MongoDB Connection (replace with your actual MongoDB URI)
MONGODB_URI=mongodb+srv://your_username:your_password@cluster.mongodb.net/neomeet?retryWrites=true&w=majority
# JWT Secret (generate a strong random string)
JWT_SECRET=your_super_secret_jwt_key_here_change_this
# Server Configuration
PORT=8000
NODE_ENV=development
# Frontend URL (for CORS)
FRONTEND_URL=http://localhost:3000
⚠️ IMPORTANT: Never commit your.envfile! It's already in.gitignoreto keep your secrets safe.
- Start the backend server:
npm startThe backend server will run on http://localhost:8000
- Navigate to the frontend directory:
cd frontend- Install dependencies:
npm install- Create a
.envfile from the example (optional):
# Copy the example file
cp .env.example .env- Configure your environment variables in
.env(if needed):
# Backend API URL
REACT_APP_API_URL=http://localhost:8000
# WebSocket URL
REACT_APP_SOCKET_URL=http://localhost:8000Note: The frontend will use default values if
.envis not created.
- Start the React development server:
npm startThe frontend will run on http://localhost:3000
When you first visit NeoMeet, you'll see the landing page with options to:
- Get Started - Create a new account and start a meeting
- Join as Guest - Join a meeting without registration
- Login/Register - Access your account
The page features a clean, modern design with dark mode support.
On this screen, you can either sign in to your NeoMeet account or create a new one:
If you already have an account:
- Enter your email and password
- Click Sign In to continue
If you're new:
- Click Sign Up button
- Fill in your name, email, and password
- Create your account in just a few seconds
After logging in, you'll reach the home page where you can:
Host a Meeting:
- The system automatically generates a unique meeting code
- Share this code with others to start a new video call
Join a Meeting:
- Already have a meeting code?
- Simply enter the code in the text field
- Click JOIN to join the ongoing call
Before joining the meeting, you'll enter the lobby where you can:
- Allow camera & mic - Grant permissions for video and audio
- Check your preview - See how you look before joining
- Enter your name - Set your display name for the meeting
- Click CONNECT - Join the video call when ready
This ensures you're fully prepared before entering the meeting room.
You're Now in the Meeting!
Once connected, you'll see:
- Large video display - Main participant video feed
- Participant thumbnails - Other meeting participants in a grid
- Control bar - Easy access to all meeting controls at the bottom
- Chat panel - Messaging sidebar on the left (toggleable)
You've successfully joined the call and are ready to communicate!
The chat panel allows you to:
- Send messages - Type and send text messages to all participants
- Receive messages - See messages from other participants in real-time
- Copy meeting code - Share the meeting link with others directly from the chat panel
- Toggle visibility - Show or hide the chat panel as needed
Messages appear in a modern bubble design with sender names clearly displayed.
Use Meeting Tools
Inside the meeting, you can use all essential tools from the control bar:
- 📹 Camera Toggle - Turn your video on/off
- 🎤 Mic Toggle - Mute or unmute yourself
- 📺 Screen Share - Present your screen to others
- 💬 Chat Panel - Send and receive messages with participants
- 📋 Copy Code - Share your meeting code to invite others
- 📞 End Call - Leave the meeting anytime
Everything you need is available right in the bottom control bar for easy access.
- Create a
Procfilein the backend directory:
web: node src/app.js
- Deploy to Heroku:
heroku create your-app-name-backend
git push heroku main- Set environment variables:
heroku config:set MONGODB_URI=your_mongodb_uri
heroku config:set JWT_SECRET=your_jwt_secret- Build the production version:
npm run build- Deploy using Vercel:
vercel --prodOr Netlify:
netlify deploy --prod.env files to Git!
Before pushing code, always verify:
git status✅ It should NOT show .env files.
If .env is tracked, remove it immediately:
git rm --cached .env
git rm --cached backend/.env
git rm --cached frontend/.env
git commit -m "Remove .env files from tracking"After cloning the repository:
- Copy the example files:
# In backend folder
cp .env.example .env
# In frontend folder
cp .env.example .env-
Fill in your own values in each
.envfile -
Never share your
.envfile - each developer should have their own
For JWT_SECRET, generate a strong random string:
# Using Node.js
node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"
# Or use an online generator (ensure it's a trusted source)Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a new branch (
git checkout -b feature/YourFeature) - Commit your changes (
git commit -m 'Add some feature') - Push to the branch (
git push origin feature/YourFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Made with ❤️ by NeoMeet Team
For questions or support, please open an issue on GitHub.






