Skip to content

Chhatrapati-sahu-09/NeoMeet

Repository files navigation

NeoMeet Logo

NeoMeet – Video Conferencing Application

Connect • Collaborate • Communicate


Overview

NeoMeet is a modern real-time video conferencing application that enables seamless communication through high-quality video calls, screen sharing, and instant messaging.

Built using React, Node.js, WebRTC, and Socket.io, NeoMeet provides a simple interface for hosting and joining meetings with minimal setup.


Features

Feature Description
Video Calls Real-time video and audio communication
Real-Time Chat Send messages during meetings
Screen Sharing Share screen with participants
Multi-Participant Meetings Support for multiple users
Secure Authentication Login and registration system
Dark / Light Mode UI theme toggle
Meeting Code Join Join meeting via code
Responsive Design Works across devices
Real-Time Signaling WebRTC signaling via Socket.io

Tech Stack


Frontend

Frontend

Technology Purpose
React Frontend UI framework
Material UI UI component library
React Router Client-side routing
Socket.io Client Real-time communication
WebRTC Peer-to-peer video/audio streaming

Backend

Backend

Technology Purpose
Node.js Runtime environment
Express.js Backend framework
Socket.io WebSocket communication
MongoDB NoSQL database
JWT Authentication tokens
bcrypt Password hashing

Project Structure

flowchart TD

A[ApnaVideoCall]

A --> B[backend]
B --> C[src]

C --> D[controllers]
D --> D1[socketManager.js]
D --> D2[user.controller.js]

C --> E[models]
E --> E1[meeting.model.js]
E --> E2[user.model.js]

C --> F[routes]
F --> F1[users.routes.js]

C --> G[app.js]

A --> H[frontend]

H --> I[public]
I --> I1[screenshots]
I --> I2[index.html]

H --> J[src]

J --> K[contexts]
K --> K1[AuthContext.jsx]
K --> K2[ThemeContext.jsx]

J --> L[pages]
L --> L1[landing.jsx]
L --> L2[authentication.jsx]
L --> L3[home.jsx]
L --> L4[VideoMeet.jsx]
L --> L5[history.jsx]

J --> M[styles]
M --> M1[videoComponent.module.css]

J --> N[utils]
N --> N1[withAuth.jsx]

J --> O[App.js]
J --> P[App.css]
J --> Q[index.js]

A --> R[README.md]
Loading

Installation

Prerequisites

  • Node.js (v14 or higher)
  • MongoDB (local or MongoDB Atlas)
  • npm or yarn

Backend Setup

Navigate to backend

cd backend

Install dependencies

npm install

Create environment file

cp .env.example .env

Configure environment variables

MONGODB_URI=your_mongodb_uri
JWT_SECRET=your_secret_key
PORT=8000
NODE_ENV=development
FRONTEND_URL=http://localhost:3000

Start backend server

npm start

Server runs on

http://localhost:8000

Frontend Setup

Navigate to frontend

cd frontend

Install dependencies

npm install

Create environment file

cp .env.example .env

Configure environment

REACT_APP_API_URL=http://localhost:8000
REACT_APP_SOCKET_URL=http://localhost:8000

Start frontend

npm start

Frontend runs on

http://localhost:3000

Application Workflow


Landing Page

Landing Page

Users can

  • Create an account
  • Login to account
  • Join meeting as guest

Authentication

Authentication

Users can

  • Register new account
  • Login using credentials

Passwords are securely hashed using bcrypt.


Meeting Dashboard

Home

Users can

  • Create meeting
  • Join meeting using meeting code

Meeting Lobby

Lobby

Before joining users can

  • Preview camera
  • Enable microphone
  • Enter display name

Video Meeting Interface

Meeting

Meeting interface includes

  • Video grid
  • Chat panel
  • Meeting controls
  • Participant display

Meeting Controls

Controls

Controls available

  • Camera toggle
  • Microphone mute/unmute
  • Screen sharing
  • Chat panel
  • Copy meeting code
  • Leave meeting

Deployment

Backend Deployment (Heroku Example)

Create Procfile

web: node src/app.js

Deploy

heroku create neomeet-backend
git push heroku main

Set environment variables

heroku config:set MONGODB_URI=your_uri
heroku config:set JWT_SECRET=your_secret

Frontend Deployment

Build production

npm run build

Deploy using

vercel --prod

or

netlify deploy --prod

Security Best Practices

Never commit .env files to Git.

Check

git status

If tracked remove

git rm --cached .env
git rm --cached backend/.env
git rm --cached frontend/.env

Generate Secure JWT Secret

node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"

Contributing

1 Fork the repository

2 Create branch

git checkout -b feature/your-feature

3 Commit changes

git commit -m "Add feature"

4 Push branch

git push origin feature/your-feature

5 Open Pull Request


License

This project is licensed under the MIT License.


Author

NeoMeet Development Team

For support or issues open a GitHub issue.

About

A real-time video calling app with WebRTC, screen share, chat, authentication, and meeting rooms built using React, Node.js, Socket.io, and MongoDB.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors