A modern, full-stack video conferencing application built with Next.js, TypeScript, and ZEGOCLOUD SDK. MeetFlow provides seamless video calling experience with advanced features like OTP email verification, password reset, and responsive design.
- High-quality video calls powered by ZEGOCLOUD
- Real-time audio and video communication
- Screen sharing capabilities
- Multi-participant support
- OTP Email Verification - Secure account creation with email verification
- Password Reset - Forgot password with OTP verification
- JWT Authentication - Secure session management
- Protected Routes - Secure meeting access
- Beautiful, responsive design with Tailwind CSS
- Mobile-first approach
- Dark theme with gradient backgrounds
- Smooth animations and transitions
- Password visibility toggles
- Responsive design for all devices
- Progressive Web App (PWA) support
- Mobile-optimized interface
- Touch-friendly controls
Beautiful landing page with gradient background and call-to-action buttons
Secure registration process with email OTP verification
Login form with forgot password functionality and OTP verification
Professional video calling interface with ZEGOCLOUD integration
- Node.js 18+
- MongoDB (local or Atlas)
- ZEGOCLOUD account
- Gmail account for email service
-
Clone the repository
git clone https://github.com/theshibaprasad/MeetFlow.git cd MeetFlow -
Install dependencies
npm install
-
Environment Setup Create a
.envfile:# Database MONGODB_URI=mongodb://localhost:27017/videocall # JWT Authentication JWT_SECRET=your-super-secret-jwt-key-change-this-in-production # Email Service (Gmail) EMAIL_USER=your-email@gmail.com EMAIL_PASS=your-app-password # ZEGOCLOUD Video SDK NEXT_PUBLIC_ZEGO_APP_ID=your-zego-app-id NEXT_PUBLIC_ZEGO_SERVER_SECRET=your-zego-server-secret
-
Start the development server
npm run dev
-
Open your browser Navigate to http://localhost:3000
- Next.js 15 - React framework with App Router
- React 19 - Latest React with concurrent features
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first CSS framework
- Next.js API Routes - Serverless API endpoints
- MongoDB - NoSQL database with Mongoose ODM
- JWT - JSON Web Tokens for authentication
- Nodemailer - Email service integration
- ZEGOCLOUD SDK - Professional video calling infrastructure
- WebRTC - Real-time communication protocols
- Vercel - Serverless deployment platform
- MongoDB Atlas - Cloud database service
src/
βββ app/ # Next.js App Router
β βββ api/ # API routes
β β βββ auth/ # Authentication endpoints
β β βββ login/ # Login API
β β βββ register/ # Registration API
β β βββ send-otp/ # OTP sending API
β β βββ verify-otp/# OTP verification API
β β βββ reset-password/ # Password reset API
β β βββ me/ # User profile API
β βββ login/ # Login page
β βββ register/ # Registration page
β βββ meeting/[roomID]/ # Dynamic meeting room
β βββ globals.css # Global styles
β βββ layout.tsx # Root layout
β βββ page.tsx # Home page
βββ components/ # React components
β βββ HomeScreen.tsx # Main landing page
β βββ Login.tsx # Login form with forgot password
β βββ Register.tsx # Registration with OTP
β βββ MeetingRoom.tsx # Video call interface
β βββ ProtectedRoute.tsx # Route protection
βββ contexts/ # React contexts
β βββ AuthContext.tsx # Authentication state management
βββ lib/ # Utility libraries
β βββ mongodb.ts # Database connection
β βββ email.ts # Email service configuration
βββ models/ # Database models
βββ User.ts # User schema
βββ OTP.ts # OTP verification schema
POST /api/auth/register- User registrationPOST /api/auth/login- User loginPOST /api/auth/logout- User logoutGET /api/auth/me- Get current user profile
POST /api/auth/send-otp- Send OTP to emailPOST /api/auth/verify-otp- Verify OTP codePOST /api/auth/reset-password- Reset password after OTP verification
GET /api/health- Application health status
- Registration Flow: Users must verify their email before account creation
- Password Reset: Secure password reset with OTP verification
- Email Templates: Beautiful HTML email templates
- Security: 10-minute OTP expiration with automatic cleanup
- Mobile-First: Optimized for mobile devices
- Progressive Enhancement: Works on all screen sizes
- Touch-Friendly: Large buttons and intuitive navigation
- Dark Theme: Modern gradient-based design
- High Quality: Up to 720p video quality
- Low Latency: Real-time communication
- Screen Sharing: Share your screen with participants
- Multi-User: Support for multiple participants
-
Prepare for deployment
git add . git commit -m "Ready for deployment" git push origin main
-
Deploy to Vercel
- Connect your GitHub repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy automatically with zero configuration
-
Configure MongoDB Atlas
- Create a MongoDB Atlas cluster
- Update
MONGODB_URIin Vercel environment variables - Whitelist Vercel IP addresses
| Variable | Description | Required |
|---|---|---|
MONGODB_URI |
MongoDB Atlas connection string | β |
JWT_SECRET |
Secret key for JWT tokens | β |
EMAIL_USER |
Gmail address for sending emails | β |
EMAIL_PASS |
Gmail app password | β |
NEXT_PUBLIC_ZEGO_APP_ID |
ZEGOCLOUD App ID | β |
NEXT_PUBLIC_ZEGO_SERVER_SECRET |
ZEGOCLOUD Server Secret | β |
- HTTP-Only Cookies - Secure JWT storage
- Password Hashing - bcrypt with salt rounds
- OTP Expiration - Time-limited verification codes
- Email Validation - Proper email format checking
- CORS Protection - Cross-origin request security
- Input Sanitization - XSS protection
- β Chrome 80+
- β Firefox 75+
- β Safari 13+
- β Edge 80+
- β Mobile browsers (iOS Safari, Chrome Mobile)
Email not sending
- Verify Gmail app password is correct
- Check EMAIL_USER and EMAIL_PASS environment variables
- Ensure Gmail 2FA is enabled
Video not working
- Allow camera/microphone permissions
- Check ZEGOCLOUD credentials
- Verify browser compatibility
Database connection failed
- Check MongoDB Atlas connection string
- Verify network access and IP whitelist
- Ensure database is running
OTP verification failing
- Check email delivery
- Verify OTP hasn't expired (10 minutes)
- Clear browser cache and cookies
We welcome contributions! Please follow these steps:
- 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
- Follow TypeScript best practices
- Write meaningful commit messages
- Test thoroughly before submitting
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
Shiba Prasad
- LinkedIn: @theshibaprasad
- GitHub: @theshibaprasad
- ZEGOCLOUD for video calling infrastructure
- Next.js team for the amazing framework
- Tailwind CSS for the utility-first CSS framework
- MongoDB for the database solution
Made with β€οΈ by Shiba Prasad
β Star this repository if you found it helpful!



