Skip to content

Avijit0001/MeetNest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🪺 MeetNest

A cozy space for meetings, movie nights, and collaboration.

Python FastAPI WebRTC Socket.IO License


✨ Overview

MeetNest is a real-time, peer-to-peer video calling and screen sharing application built with WebRTC. Create a room, invite a friend, and enjoy crystal-clear video calls, live chat, and synchronized screen sharing — all from your browser, no downloads required.


🚀 Features

Feature Description
🎥 Video Call High-quality P2P video & audio powered by WebRTC
🖥️ Screen Sharing Share your screen in real-time with a single click
💬 Live Chat Built-in text chat alongside your video call
🔐 TURN/STUN Support Reliable connectivity via Turnix.io ICE servers
🏠 Room System Create or join rooms with simple 8-character codes
📱 Responsive UI Works on desktop, laptop, tablet, and mobile
🧊 Glassmorphism UI Modern frosted-glass design with a warm White + Orange palette

🖼️ Tech Stack

  • BackendFastAPI + python-socketio (async ASGI)
  • Frontend — Vanilla HTML / CSS / JavaScript
  • Real-timeSocket.IO for signaling, WebRTC for media
  • TURN/STUNTurnix.io for NAT traversal
  • Package Manageruv

📦 Installation

Prerequisites

  • Python 3.12+
  • uv (fast Python package manager)

1. Clone the repository

git clone https://github.com/Avijit0001/MeetNest.git
cd MeetNest

2. Set up environment variables

Create a .env file in the project root:

TURNIX_API_KEY = "your_turnix_api_key_here"
TURNIX_ICE_URL = "https://turnix.io/api/v1/credentials/ice"

💡 Get a free API key from Turnix.io. Without it, the app falls back to Google STUN servers (works on the same network but may fail across NATs).

3. Install dependencies

uv sync

▶️ Running the App

Start the server

uv run uvicorn app.main:app --host 0.0.0.0 --port 8000

Then open http://localhost:8000 in your browser.

Expose to the internet (optional)

To share with friends outside your local network, use ngrok:

ngrok http 8000

Share the generated ngrok URL with your friend — they can join your room directly!


🗂️ Project Structure

MeetNest/
├── app/
│   ├── main.py              # FastAPI + Socket.IO signaling server
│   ├── static/
│   │   ├── css/
│   │   │   └── style.css    # UI styles (White + Orange glassmorphism)
│   │   └── js/
│   │       └── app.js       # Client-side WebRTC + Socket.IO logic
│   └── templates/
│       └── index.html       # Single-page application template
├── .env                     # Environment variables (not committed)
├── .gitignore
├── pyproject.toml           # Project metadata & dependencies
├── uv.lock                  # Lockfile for reproducible installs
└── README.md

🔧 How It Works

┌──────────┐     Socket.IO       ┌──────────────┐     Socket.IO       ┌──────────┐
│  User A  │ ◄─────────────────► │  FastAPI +   │ ◄─────────────────► │  User B  │
│ (Browser)│     signaling       │  Socket.IO   │     signaling       │ (Browser)│
└────┬─────┘                     │   Server     │                     └────┬─────┘
     │                           └──────────────┘                          │
     │                                                                     │
     │              WebRTC (P2P — video, audio, screen)                    │
     └─────────────────────────────────────────────────────────────────────┘
  1. User A creates a room → gets an 8-character room code
  2. User B joins with the code → signaling server relays SDP offers/answers
  3. WebRTC establishes a direct P2P connection for media streaming
  4. Chat messages are relayed through Socket.IO
  5. Screen sharing uses replaceTrack() to swap video tracks seamlessly

🛠️ API Endpoints

Method Endpoint Description
GET / Serve the main application
GET /health Health check (room count, connected users)
GET /debug/rooms Debug view of all active rooms
GET /api/turn-credentials Fetch TURN/STUN credentials from Turnix.io

👤 Author

Avijit Paul


Made with 🧡 by Avijit Paul

About

A cozy space for meetings, movie nights, and collaboration.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors