A modern, feature-rich video conferencing application built with Next.js 15, Stream Video SDK, and Clerk authentication. This app provides a seamless experience for scheduling, joining, and managing virtual meetings with real-time video, audio, and screen sharing capabilities.
- 🎥 Real-time Video Conferencing - High-quality video and audio calls powered by Stream Video SDK
- 🔐 Secure Authentication - User authentication and management with Clerk
- 📅 Meeting Scheduling - Schedule upcoming meetings with custom descriptions
- 🏠 Personal Meeting Room - Each user gets a dedicated meeting room with a permanent link
- 📝 Meeting Management - View upcoming, previous, and recorded meetings
- 🎬 Recording Playback - Access and replay recorded meeting sessions
- 📱 Responsive Design - Works seamlessly on desktop and mobile devices
- 🎨 Modern UI - Clean, intuitive interface built with Tailwind CSS and Radix UI
- Framework: Next.js 15.3.2 (App Router)
- Language: TypeScript
- Video SDK: Stream.io Video React SDK
- Authentication: Clerk
- Styling: Tailwind CSS 4.1.8
- UI Components: Radix UI (Dialog, Dropdown Menu, Slot)
- Date Picker: React DatePicker
- Icons: Lucide React
- Notifications: Sonner (Toast notifications)
my-app/
├── actions/ # Server actions
│ └── stream.actions.ts
├── app/
│ ├── (auth)/ # Authentication routes
│ │ ├── sign-in/
│ │ └── sign-up/
│ ├── (root)/ # Main application routes
│ │ ├── (home)/ # Home, previous, recordings, etc.
│ │ └── meeting/[id] # Dynamic meeting room
│ ├── layout.tsx # Root layout
│ └── globals.css # Global styles
├── components/ # React components
│ ├── ui/ # Reusable UI components
│ ├── CallList.tsx # Meeting list display
│ ├── MeetingRoom.tsx # Video call interface
│ ├── MeetingSetup.tsx # Pre-call setup
│ └── ...
├── constants/ # App constants
├── hooks/ # Custom React hooks
├── lib/ # Utility functions
├── providers/ # Context providers
└── public/ # Static assets
- Node.js 20.x or later
- npm, yarn, pnpm, or bun
- Clone the repository:
git clone https://github.com/sugamghising/VideoConfrencing.git
cd VideoConferencing/my-app- Install dependencies:
npm install- Set up environment variables:
Create a .env.local file in the root directory and add the following:
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
# Stream.io Video SDK
NEXT_PUBLIC_STREAM_API_KEY=your_stream_api_key
STREAM_SECRET_ID=your_stream_secret_key
# App URL
NEXT_PUBLIC_BASE_URL=http://localhost:3000To get your API keys:
- Clerk: Sign up at clerk.com and create a new application
- Stream.io: Sign up at getstream.io and create a new video app
- Run the development server:
npm run dev- Open http://localhost:3000 in your browser
npm run dev- Start development server with Turbopacknpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLint
Users can sign up and sign in using Clerk's secure authentication system. The app supports email/password authentication and social logins.
- Instant Meeting - Start a meeting immediately
- Schedule Meeting - Plan a meeting for a future date/time
- Join Meeting - Enter a meeting using a meeting ID
- Personal Room - Access your permanent meeting room
- Toggle video on/off
- Toggle microphone on/off
- Share screen
- View participant list
- Chat functionality
- Leave/End call
- Upcoming - View all scheduled meetings
- Previous - See past meetings
- Recordings - Access recorded sessions
The app can be deployed on Vercel:
- Push your code to GitHub
- Import your repository on Vercel
- Add environment variables in Vercel dashboard
- Deploy
For detailed deployment instructions, check the Next.js deployment documentation.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source and available under the MIT License.
- Repository: github.com/sugamghising/VideoConfrencing
- Next.js Documentation: nextjs.org/docs
- Stream Video SDK: getstream.io/video/docs
- Clerk Documentation: clerk.com/docs