Modern, secure and instant video chat application built with React, TypeScript, and WebRTC.
π Live Demo: https://chatreall.netlify.app/
- π₯ HD Video Calls - High quality video with WebRTC technology
- π€ Crystal Clear Audio - Clear sound with noise cancellation
- π Private & Secure - Encrypted P2P connection, no data on server
- π± Multi-device - Works on desktop, tablet and mobile
- β‘ Instant Rooms - Create or join rooms quickly
- β° Unlimited Time - No time restrictions on calls
- π§ͺ Camera Test - Test your camera and microphone before joining
- π¨ Modern UI - Clean, responsive design with modern header
- Frontend: React 18 + TypeScript
- Build Tool: Vite
- Styling: CSS Modules
- Icons: React Icons (Material Design)
- Real-time Communication: WebRTC (Native)
- Fonts: Inter (Google Fonts)
- Node.js 16+
- npm or yarn
- Clone the repository
git clone https://github.com/your-username/chat-real.git
cd chat-real- Install dependencies
npm install- Start development server
npm run dev- Open your browser
http://localhost:5173
npm run dev- Start development servernpm run build- Build for productionnpm run preview- Preview production buildnpm run lint- Run ESLint
src/
βββ components/ # React components
β βββ CameraTest/ # Camera/microphone testing
β βββ Controls/ # Video call controls
β βββ Header/ # Navigation header
β βββ Landing/ # Landing page
β βββ ShareButton/ # Room link sharing
β βββ VideoChat/ # Main video chat interface
β βββ VideoContainer/ # Video display container
βββ hooks/ # Custom React hooks
β βββ useVideoChat.ts # Video chat state management
βββ services/ # Business logic
β βββ WebRTCService.ts # WebRTC implementation
βββ types/ # TypeScript type definitions
βββ utils/ # Utility functions
β βββ roomUtils.ts # Room ID generation
βββ App.tsx # Main app component
βββ main.tsx # App entry point
βββ index.css # Global styles
- Click "Create New Room" on the homepage
- Allow camera and microphone permissions
- Share the room link with others
- Paste the room ID in the "Join Existing Room" input
- Click "Join Room" or press Enter
- Allow camera and microphone permissions
- Toggle camera on/off
- Toggle microphone on/off
- End call and return to homepage
- Copy room link to share with others
Currently, this project doesn't require environment variables as it uses WebRTC peer-to-peer connections. For production deployment with STUN/TURN servers, you may want to add:
# Optional: Custom STUN/TURN servers
VITE_STUN_SERVER=stun:your-server.com:3478
VITE_TURN_SERVER=turn:your-server.com:3478
VITE_TURN_USERNAME=your-username
VITE_TURN_PASSWORD=your-password- Chrome 60+
- Firefox 60+
- Safari 13+
- Edge 79+
Note: Requires HTTPS for camera/microphone access in production.
- Push your code to GitHub
- Connect your repository to Vercel
- Deploy automatically
- Build the project:
npm run build - Deploy the
dist/folder to Netlify
- Build the project:
npm run build - Deploy the
dist/folder to your hosting provider
Important: Make sure your hosting provider serves the app over HTTPS for camera/microphone access.
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes and commit:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature/your-feature - Open a pull request
- Follow the existing code style
- Add TypeScript types for new code
- Write meaningful commit messages
- Test your changes thoroughly
- Update documentation if needed
- Use TypeScript for all new code
- Follow React best practices
- Use CSS Modules for styling
- Prefer functional components with hooks
- Use semantic HTML elements
- Screen sharing functionality
- Chat messages during calls
- Recording capabilities
- Background blur/virtual backgrounds
- Room passwords/access control
- Mobile app (React Native)
- Multiple participants support
- File sharing
- Whiteboard integration
- Refresh required if camera access is denied initially
- iOS Safari may have audio issues in some cases
- Firefox may require manual enable of media devices
This project is licensed under the MIT License - see the LICENSE file for details.
- WebRTC API for real-time communication
- React team for the amazing framework
- Material Design for the icon system
- Inter font family by Rasmus Andersson
- Vite for the lightning-fast build tool
If you have any questions or need help:
- π§ Open an issue on GitHub
- π¬ Start a discussion in the repository
- π Check the documentation
Made with β€οΈ by the Chat Real community