Open-source, no-account, synchronized watch parties across platforms.
``` streamfusion/ ├── app/ # Expo React Native app │ ├── _layout.tsx # Root layout │ ├── index.tsx # Home screen │ └── room/[id].tsx # Room screen ├── src/ │ ├── components/ # Reusable UI components │ ├── screens/ # Screen components │ ├── store/ # Zustand state management │ ├── services/ # WebRTC, Signal, API services │ ├── hooks/ # Custom React hooks │ ├── db/ # Local storage & database │ ├── types/ # TypeScript type definitions │ └── utils/ # Utility functions ├── server/ # Node.js signal server │ └── src/ │ └── index.ts # WebSocket server └── docs/ # Documentation ```
- Node.js 18+
- Expo CLI
- npm or yarn
-
Install dependencies: ```bash npm install cd server && npm install && cd .. ```
-
Start the signal server: ```bash npm run dev:server ```
-
Start the Expo app: ```bash npm start ```
- WebSocket: Room creation, peer discovery, signaling
- WebRTC DataChannels: Real-time sync, chat, queue control
- Local Storage: Room history, preferences, offline state
- Zustand: Global room and sync state
- React Query: Server state and caching
- AsyncStorage: Persistent local data
- YouTube (embedded)
- Twitch (embedded)
- HLS streams
- MP4 files
- ✅ Create/Join rooms via code
- ✅ Real-time playback sync (±1s drift)
- ✅ Chat system
- ✅ Media queue management
- ✅ Peer mesh topology
- ✅ Offline recovery
- ✅ No accounts required
- ✅ Privacy-first design
```bash npm test ```
```bash npm run type-check ```
```bash npm run lint ```
```bash eas build --platform ios eas build --platform android ```
```bash docker build -t streamfusion-server ./server docker run -p 3001:3001 streamfusion-server ```
MIT - See LICENSE file for details
Contributions welcome! Please read CONTRIBUTING.md first.