https://github.com/inledgroup/bitmeet-solo
WebRTC (P2P) meetings with the same features as Zoom
https://github.com/inledgroup/bitmeet-solo
decentralized encryption end-to-end-encryption p2p privacy private webrct
Last synced: about 1 month ago
JSON representation
WebRTC (P2P) meetings with the same features as Zoom
- Host: GitHub
- URL: https://github.com/inledgroup/bitmeet-solo
- Owner: InledGroup
- License: other
- Created: 2026-03-09T16:30:25.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-04-04T14:26:58.000Z (about 2 months ago)
- Last Synced: 2026-04-17T15:14:33.803Z (about 2 months ago)
- Topics: decentralized, encryption, end-to-end-encryption, p2p, privacy, private, webrct
- Language: TypeScript
- Homepage:
- Size: 235 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🚀 BitMeet: Decentralized Serverless Video Conferencing
BitMeet is a professional-grade, peer-to-peer video conferencing application built with **Astro**, **React**, and **WebRTC**. It uses **Firebase Firestore** as a signaling channel for participant discovery, ensuring a truly serverless experience for the developer and high privacy for the users.
## ✨ Features
- **Full Mesh WebRTC**: Direct P2P connections between all participants.
- **No Server Infrastructure**: Uses Firebase for discovery and PeerJS for signaling.
- **Dynamic Layout**: Smart video grid that adapts to the number of participants.
- **Screen Sharing**: High-quality display capture and sharing.
- **Media Controls**: Professional mute/unmute and camera toggle.
- **Infinite Rooms**: Create unique meetings with a single click.
- **SSR Enabled**: Built with Astro SSR for dynamic room routing.
## 🛠️ Tech Stack
- **Frontend**: Astro 5.0, React 19.
- **Communication**: WebRTC (PeerJS).
- **Signaling/Discovery**: Firebase Firestore.
- **Icons**: Lucide React.
- **Styling**: Pure CSS (Modern Variables, Flexbox, Grid).
## 🚀 Getting Started
### 1. Clone and Install
```bash
npm install
```
### 2. Configure Firebase
Create a project in [Firebase Console](https://console.firebase.google.com/) and enable **Cloud Firestore**.
Copy `.env.example` to `.env` and fill in your credentials:
```bash
cp .env.example .env
```
Required variables:
- `PUBLIC_FIREBASE_API_KEY`
- `PUBLIC_FIREBASE_PROJECT_ID`
- ... (see `.env.example`)
### 3. Firestore Rules
Ensure your Firestore rules allow reading/writing to the `rooms` collection:
```javascript
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /rooms/{roomId}/participants/{participantId} {
allow read, write: if true; // In production, add proper validation
}
}
}
```
### 4. Run Development Server
```bash
npm run dev
```
### 5. Build for Production
```bash
npm run build
node ./dist/server/entry.mjs
```
## 🔐 Privacy & Security
BitMeet uses WebRTC to encrypt media streams end-to-end. Firebase only stores temporary metadata (PeerIDs and presence status) required for participants to find each other. No audio or video data ever touches a server.
---
**Hecho con ❤️ por JaimeGH. Made in Spain**