Architecture overview
A privacy claim is only as strong as the code behind it. Here is what's actually built.
Frontend (React 19, SPA)
Single-page React app, served as static files from Railway's edge. The editor is roughly 30k lines of JavaScript organised into ~250 components. State is managed by React hooks + Context (no Redux). Routing via react-router-dom.
All video work happens inside the browser via three native APIs:
WebCodecs— H.264/H.265/VP9 encode + decode, hardware-accelerated when the GPU supports it. Used for export on Pro tier.MediaRecorder— fallback export when WebCodecs isn't available (older browsers, Safari pre-17).FFmpeg.wasm— handles unsupported input formats (MOV, AVI, WMV, MKV, FLV) by transcoding them to a browser-playable codec. Runs in a Web Worker spawned by the library, off the main thread.
Backend (FastAPI + MongoDB)
The backend's only jobs are:
- User accounts (Google OAuth + session cookies)
- Stripe payments + webhook handling
- Anonymous analytics (page-views collection)
- Proxy for opt-in AI features (Whisper, Claude, Sora, Nano Banana) — your audio/prompts pass through; we don't retain them beyond the call
- Email transactional flows via Resend (welcome, retention drips you can unsubscribe from)
The backend has no video processing pipeline. There is no POST /api/video/process endpoint. If we wanted to, we couldn't process your video without shipping new code first.
What's NOT in the stack
- No cloud video storage (S3, R2, etc.) — we have no bucket your footage could live in.
- No server-side FFmpeg — only the browser-side
.wasmcopy. - No CDN-side video transformations.
- No third-party video processing APIs.
- No analytics SaaS (Mixpanel, Amplitude, Segment, Heap) — we use our own minimal page-view collection so the data never leaves our database.
- No session-replay tools (FullStory, LogRocket, Hotjar). These tools record your screen; we do not.
Open verifiability
Bundle source maps ship with every build. Open DevTools → Sources → look at main.[hash].js. You can read the actual editor code — variable names, function bodies, the lot. Most apps strip source maps in production. We don't.