Lightweight screen recorder with circular webcam overlay and whiteboard. Built with Tauri + React for a small footprint (~3–7MB vs Electron's 150MB+).
npm install
npm run tauri devTo test in a regular browser (helps isolate Tauri/WebView issues):
npm run dev:webThen open http://localhost:5173 (uses port 5173 so it doesn't conflict with npm run tauri dev on 1420)
Live Meeting (requires signaling server):
# Terminal 1 - Start signaling server
npm run signaling
# Terminal 2 - Start app
npm run tauri devIn production (desktop + web), the app connects to a deployed signaling server. Deploy via Render Blueprint (see Deploy to Web) — it runs both the app and signaling server.
Test Live Meeting with multiple users (dev mode):
# Terminal 1
npm run signaling
# Terminal 2 - Use browser for easy multi-tab testing
npm run devThen open http://localhost:1420 in 2+ browser tabs (or windows). In each tab:
- Enter a different name (e.g. "Alice", "Bob")
- Use the same Room ID (copy from first tab, or both click "New" and paste one ID)
- Click Join Meeting
You can also use an incognito/private window, or a different browser (Chrome + Safari) for separate camera/mic sessions.
npm run tauri buildOutput in src-tauri/target/release/bundle/:
- DreamWork.app — Double-click to run
- DreamWork.dmg — Installer
The app checks for updates on startup and installs + relaunches automatically. One-time setup:
- Run
npm run tauri signer generate -- -w keys/dreamwork.key(prompts for password), thennpm run setup-updater— updates config with your public key - Add these GitHub Secrets (Settings → Secrets → Actions):
TAURI_SIGNING_PRIVATE_KEY— contents ofkeys/dreamwork.keyTAURI_SIGNING_PRIVATE_KEY_PASSPHRASE— the password you set when generating the keyVITE_SIGNALING_URL— (optional) signaling server URL for Live Meeting; defaults tohttps://dreamwork-signaling.onrender.comif unset- macOS notarization (optional, for installs without Gatekeeper warning):
APPLE_ID,APPLE_PASSWORD(app-specific password from appleid.apple.com),APPLE_TEAM_ID
- Update
repositoryinpackage.jsonif your repo is elsewhere (e.g."repository": "github.com/your-username/dreamwork") - Release: push to the
releasebranch, or create a tag (e.g.git tag v0.1.0 && git push --tags). Ensureversioninsrc-tauri/tauri.conf.jsonmatches the tag
- Desktop app: Run
npm run tauri buildlocally to produce a new.app/.dmg(macOS) or.exe(Windows) with the latest features. Users with auto-updates enabled get new versions when you push releases to GitHub. - Web (dreamwork.onrender.com): Render deploys from your GitHub repo. It typically redeploys on each push to the connected branch. GitHub Actions passing is not required for the web deploy — Render builds from the repo directly.
- GitHub Actions: The release workflow builds desktop installers for macOS, Linux, and Windows. If the Windows job fails (e.g. exit code 1), check the Actions logs. Common causes: missing
TAURI_SIGNING_PRIVATE_KEY/TAURI_SIGNING_PRIVATE_KEY_PASSPHRASEsecrets, or MSVC toolchain issues on the runner.
- Capture Screen — System picker to choose screen, window, or app to share
- Start Camera — Webcam with circular PiP; drag to reposition
- Avatar — Size, shape (circle/rounded), decor (simple/glow/dashed), or use an image
- Audio — Mic and system audio with volume sliders
- Whiteboard — Excalidraw overlay for drawing
- Live Meeting — WebRTC video conferencing with chat, screen share, recording, virtual backgrounds, live transcription (run
npm run signalingfirst) - Record — Records screen + webcam composite; Save or Copy when done
"Apple cannot verify" / Gatekeeper blocks install on Mac? Two options: (1) Notarize — add APPLE_ID, APPLE_PASSWORD, APPLE_TEAM_ID to GitHub Secrets (requires Apple Developer $99/yr). (2) Workaround — right-click the app → Open → Open. Or: System Settings → Privacy & Security → scroll to the app → click "Open Anyway".
Camera not showing in full-page whiteboard? Try running in a regular browser first (npm run dev → http://localhost:1420). If it works there but not in Tauri, it may be a WebView limitation on macOS. Start the camera before opening full-page whiteboard.
Deploy the web version to Render:
- Push this repo to GitHub
- Go to Render Dashboard → New → Static Site
- Connect your GitHub repo
- Use the
render.yamlin the repo, or set manually:- Build command:
npm install && npm run build - Publish directory:
dist
- Build command:
- Deploy
The render.yaml in the repo configures this automatically when you use Blueprint (New → Blueprint).
Note: Screen capture, camera, and recording work in the browser. Live Meeting requires a separate signaling server. Some Tauri-specific features (e.g. auto-updates) are desktop-only.
Live Meeting not working on Render? (1) Ensure both Blueprint services are deployed: dreamwork (static site) and dreamwork-signaling (WebSocket server). (2) If you see "Signaling server not reachable", the app could not reach /health—check that dreamwork-signaling is running in your Render dashboard and note its URL. (3) If your signaling server has a different URL, open the app with ?signaling=YOUR_FULL_URL (e.g. https://dreamwork.onrender.com?signaling=https://dreamwork-signaling.onrender.com). (4) On free tier, the signaling server sleeps after ~15 min—first connection can take 30–60s. Use UptimeRobot pinging https://YOUR-SIGNALING-URL/health every 10 min to keep it awake.
- Tauri 2 (Rust + WebView)
- React + TypeScript + Vite
- Tailwind CSS v4 + Shadcn/UI
getDisplayMedia+getUserMedia+MediaRecorder+ Canvas 2D