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.
- 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.
- Frontend: Astro 5.0, React 19.
- Communication: WebRTC (PeerJS).
- Signaling/Discovery: Firebase Firestore.
- Icons: Lucide React.
- Styling: Pure CSS (Modern Variables, Flexbox, Grid).
npm installCreate a project in Firebase Console and enable Cloud Firestore.
Copy .env.example to .env and fill in your credentials:
cp .env.example .envRequired variables:
PUBLIC_FIREBASE_API_KEYPUBLIC_FIREBASE_PROJECT_ID- ... (see
.env.example)
Ensure your Firestore rules allow reading/writing to the rooms collection:
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
}
}
}npm run devnpm run build
node ./dist/server/entry.mjsBitMeet 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