Skip to content

jsanjaikumar/Streamify-Full-Stack-video-calling-platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸŽ₯ Streamify - Video Calling Platform

A modern, full-stack video calling platform built with React, Node.js, and Stream.io

Made with React Made with Node.js Stream.io

πŸš€ Features

οΏ½ Core Features

  • πŸ“ž 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

�️ Technical Features

  • 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

πŸ—οΈ Technology Stack

Frontend

  • 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

Backend

  • 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

πŸ“ Project Structure

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

🚦 Getting Started

Prerequisites

  • Node.js (v18 or higher)
  • npm or yarn
  • MongoDB (local or cloud instance)
  • Stream.io Account (for video calling and chat features)

πŸ”§ Installation

  1. Clone the repository

    git clone https://github.com/jsanjaikumar/Streamify-video-calling-platform.git
    cd streamify-video-calls
  2. Install dependencies

    # Install all dependencies (root, backend, and frontend)
    npm run build
  3. Environment Setup

    Create a .env file in the backend directory:

    cp backend/.env.example backend/.env

    Update the .env file 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 .env file in the frontend directory:

    VITE_STREAM_API_KEY=your_stream_api_key
  4. Start the development servers

    Backend (Terminal 1):

    cd backend
    npm install
    npm run dev

    Frontend (Terminal 2):

    cd frontend
    npm install
    npm run dev
  5. Open your browser Navigate to http://localhost:5173 to see the application running!

🎯 Usage

Getting Started with Streamify

  1. Sign Up - Create a new account with your email and password
  2. Complete Onboarding - Add your profile information
  3. Add Friends - Send friend requests to other users
  4. Start Calling - Click the call button next to any friend
  5. Chat Away - Send messages during calls or use standalone chat

Key Features Guide

  • πŸŽ₯ 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

πŸ› οΈ API Endpoints

Authentication

  • POST /api/auth/signup - User registration
  • POST /api/auth/login - User login
  • POST /api/auth/logout - User logout
  • GET /api/auth/check - Check authentication status

Users

  • GET /api/users/profile - Get user profile
  • PUT /api/users/profile - Update user profile
  • GET /api/users/friends - Get friends list
  • POST /api/users/friend-request - Send friend request

Chat

  • GET /api/chat/token - Get Stream chat token
  • POST /api/chat/create - Create chat channel

πŸš€ Deployment

Production Build

# Build the entire application
npm run build

# Start production server
npm start

Environment Variables for Production

NODE_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_secret

🀝 Contributing

We welcome contributions to Streamify! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Follow the existing code style and patterns
  • Write clear commit messages
  • Add tests for new features
  • Update documentation as needed

πŸ“ License

This project is licensed under the ISC License. See the LICENSE file for details.

πŸ™ Acknowledgments

  • 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

πŸ“ž Support

If you have any questions or need help getting started:


Made with ❀️ by the Streamify team

⭐ Star this repo if you found it helpful!

Releases

No releases published

Packages

No packages published

Languages