- π High-Quality Video Calls - Crystal clear video calling with Stream.io integration
- π¬ Real-time Chat - Instant messaging with typing indicators & reactions
- οΏ½ Friend Management - Send and manage friend requests
- π Secure Authentication - JWT-based authentication with bcrypt password hashing
- π± Responsive Design - Beautiful UI that works on all devices
- π Theme Support - 32 unique UI themes (dark and light options)
- π Notifications - Real-time notifications for friend requests and messages
- π¬ Screen Sharing & Recording - Share your screen during video calls
- Real-time Communication - WebRTC for video calls and Socket.io for chat
- RESTful API - Clean and organized backend API structure
- MongoDB Integration - Scalable NoSQL database solution
- State Management - Zustand for efficient client-side state management
- Modern UI - TailwindCSS and DaisyUI for stunning interfaces
- Error Handling - Comprehensive error handling on frontend and backend
- React 19 - Latest React with hooks and modern patterns
- Vite - Lightning-fast build tool and dev server
- TailwindCSS + DaisyUI - Utility-first CSS with beautiful components
- React Router - Client-side routing
- React Query (TanStack Query) - Server state management
- Zustand - Lightweight state management
- Stream.io Video SDK - Professional video calling features
- Axios - HTTP client for API calls
- React Hot Toast - Beautiful notifications
- Lucide React - Beautiful icons
- Node.js + Express - Fast and minimalist web framework
- MongoDB + Mongoose - NoSQL database with elegant object modeling
- JWT Authentication - Secure token-based authentication
- bcryptjs - Password hashing and security
- Stream Chat - Real-time chat functionality
- CORS - Cross-origin resource sharing
- Cookie Parser - HTTP cookie parsing middleware
streamify-video-calls/
βββ backend/ # Backend API server
β βββ src/
β β βββ controllers/ # Route controllers
β β β βββ auth.controller.js
β β β βββ chat.controller.js
β β β βββ user.controller.js
β β βββ lib/ # Utilities and configurations
β β β βββ db.js
β β β βββ stream.js
β β βββ middleware/ # Custom middleware
β β β βββ auth.middleware.js
β β βββ models/ # Database models
β β β βββ FriendRequest.js
β β β βββ User.js
β β βββ routes/ # API routes
β β β βββ auth.route.js
β β β βββ chat.route.js
β β β βββ user.route.js
β β βββ server.js # Main server file
β βββ package.json
βββ frontend/ # React frontend application
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ constants/ # App constants
β β βββ hooks/ # Custom React hooks
β β βββ lib/ # Utilities and API clients
β β βββ pages/ # Application pages
β β βββ store/ # State management
β β βββ App.jsx
β βββ package.json
βββ package.json # Root package.json
- Node.js (v18 or higher)
- npm or yarn
- MongoDB (local or cloud instance)
- Stream.io Account (for video calling and chat features)
-
Clone the repository
git clone https://github.com/jsanjaikumar/Streamify-video-calling-platform.git cd streamify-video-calls -
Install dependencies
# Install all dependencies (root, backend, and frontend) npm run build -
Environment Setup
Create a
.envfile in thebackenddirectory:cp backend/.env.example backend/.env
Update the
.envfile with your credentials:PORT=5001 MONGO_URI=mongodb://localhost:27017/streamify # Get these from https://getstream.io/ STEAM_API_KEY=your_stream_api_key STEAM_API_SECRET=your_stream_api_secret JWT_SECRET_KEY=your_super_secret_jwt_key NODE_ENV=development
Create a
.envfile in thefrontenddirectory:VITE_STREAM_API_KEY=your_stream_api_key
-
Start the development servers
Backend (Terminal 1):
cd backend npm install npm run devFrontend (Terminal 2):
cd frontend npm install npm run dev -
Open your browser Navigate to
http://localhost:5173to see the application running!
- Sign Up - Create a new account with your email and password
- Complete Onboarding - Add your profile information
- Add Friends - Send friend requests to other users
- Start Calling - Click the call button next to any friend
- Chat Away - Send messages during calls or use standalone chat
- π₯ Video Calls: High-quality video calling with screen sharing capabilities
- οΏ½ Chat: Real-time messaging with typing indicators and emoji support
- π₯ Friends: Manage your connections and see who's online
- π Notifications: Stay updated with friend requests and messages
- π Themes: Choose from 32 unique themes including dark and light options
POST /api/auth/signup- User registrationPOST /api/auth/login- User loginPOST /api/auth/logout- User logoutGET /api/auth/check- Check authentication status
GET /api/users/profile- Get user profilePUT /api/users/profile- Update user profileGET /api/users/friends- Get friends listPOST /api/users/friend-request- Send friend request
GET /api/chat/token- Get Stream chat tokenPOST /api/chat/create- Create chat channel
# Build the entire application
npm run build
# Start production server
npm startNODE_ENV=production
PORT=5001
MONGO_URI=your_production_mongo_uri
STEAM_API_KEY=your_production_stream_key
STEAM_API_SECRET=your_production_stream_secret
JWT_SECRET_KEY=your_production_jwt_secretWe welcome contributions to Streamify! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style and patterns
- Write clear commit messages
- Add tests for new features
- Update documentation as needed
This project is licensed under the ISC License. See the LICENSE file for details.
- Stream.io - For providing excellent video calling and chat SDKs
- React Team - For the amazing React framework
- Node.js Community - For the robust backend ecosystem
- MongoDB - For the flexible NoSQL database solution
If you have any questions or need help getting started:
- GitHub Issues - Create an issue
- Documentation - Check out the inline code documentation
- Stream.io Docs - Stream.io Documentation
Made with β€οΈ by the Streamify team
β Star this repo if you found it helpful!