A modern, production-ready video conferencing application built with React and Jitsi SDK. Features a clean light theme UI, user authentication, and complete meeting management.
- Video Conferencing - HD video calls powered by Jitsi Meet SDK
- Screen Sharing - Share your screen with meeting participants
- Chat - In-meeting text chat functionality
- Recording - Record meetings for later review
- Virtual Backgrounds - Customize your video background
- User Authentication - Secure login and registration system
- Meeting Management - Create, schedule, and manage meetings
- Responsive Design - Works on desktop and mobile devices
- React 18 with TypeScript
- Vite for fast development and building
- Ant Design for UI components
- Tailwind CSS for styling
- React Router for navigation
- @jitsi/react-sdk for video conferencing
- Node.js with Express
- JWT for authentication
- bcryptjs for password hashing
- Node.js 18+ installed
- npm or yarn package manager
-
Clone the repository
git clone <repository-url> cd jitsi-meet
-
Install client dependencies
cd client npm install -
Install server dependencies
cd ../server npm install -
Set up environment variables
Create
client/.env:VITE_API_URL=http://localhost:3000/api
Create
server/.env:PORT=3000 JWT_SECRET=your-secret-key-change-in-production NODE_ENV=development
-
Start the backend server
cd server npm run devServer runs on http://localhost:3000
-
Start the frontend client
cd client npm run devClient runs on http://localhost:5173
jitsi-meet/
├── client/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ │ ├── Layout.tsx
│ │ │ ├── Footer.tsx
│ │ │ ├── JoinMeetingModal.tsx
│ │ │ └── ProtectedRoute.tsx
│ │ ├── context/ # React context providers
│ │ │ ├── AuthContext.tsx
│ │ │ └── MeetingContext.tsx
│ │ ├── pages/ # Page components
│ │ │ ├── Home.tsx
│ │ │ ├── Login.tsx
│ │ │ ├── Register.tsx
│ │ │ ├── Meet.tsx
│ │ │ ├── MyMeetings.tsx
│ │ │ ├── NewMeeting.tsx
│ │ │ └── MyProfile.tsx
│ │ ├── services/ # API services
│ │ │ └── api.ts
│ │ ├── types/ # TypeScript types
│ │ │ └── index.ts
│ │ ├── App.tsx
│ │ ├── router.tsx
│ │ └── index.css
│ └── package.json
├── server/ # Express backend
│ ├── routes/
│ │ ├── auth.js # Authentication routes
│ │ └── meetings.js # Meeting routes
│ ├── app.js # Express app setup
│ └── package.json
└── README.md
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Register a new user |
| POST | /api/auth/login |
Login user |
| GET | /api/auth/profile |
Get user profile |
| PUT | /api/auth/profile |
Update user profile |
| PUT | /api/auth/change-password |
Change password |
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/meetings |
List all user meetings |
| POST | /api/meetings |
Create a new meeting |
| GET | /api/meetings/:id |
Get meeting details |
| PUT | /api/meetings/:id |
Update meeting |
| DELETE | /api/meetings/:id |
Delete meeting |
| GET | /api/meetings/join/:roomName |
Join meeting by room code |
- Log in or register an account
- Click "New Meeting" in the sidebar
- Choose "Instant Meeting" to start immediately, or "Schedule Meeting" to plan ahead
- Share the meeting link with participants
- Click "Join Meeting" in the sidebar
- Enter the meeting code (e.g.,
jitsi-abc123) - Enter your display name (if not logged in)
- Click "Join Meeting"
- Camera - Toggle video on/off
- Microphone - Toggle audio on/off
- Screen Share - Share your screen
- Chat - Open text chat
- Participants - View participant list
- Settings - Adjust audio/video settings
- Leave - Exit the meeting
The app uses a light theme by default. Theme colors can be customized in:
client/src/components/Layout.tsx- Ant Design theme configclient/src/index.css- CSS custom properties
Video conferencing settings can be modified in client/src/pages/Meet.tsx:
configOverwrite- Meeting behavior settingsinterfaceConfigOverwrite- UI customizationtoolbarButtons- Available meeting controls
# Build the client
cd client
npm run build
# The built files will be in client/dist/- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License.
- Jitsi Meet - Open source video conferencing
- Ant Design - UI component library
- Tailwind CSS - Utility-first CSS framework