# Alta Video Player (WebAVP) WebAVP is a local player for Alta/Ava Security camera exports. It focuses on core review workflows: importing video exports, synchronizing multiple cameras on one timeline, zooming into footage, and validating export integrity. The app can run in two modes: ## Core Features - Drag/drop individual video and metadata files, folders, or ZIP archives - Import unencrypted ZIPs through vendored JSZip - Import AES-encrypted ZIP exports with an in-app password prompt - Synchronize multiple camera segments on a shared timeline - Scrub, zoom, pan, change playback speed, and frame-step footage - Reorder, hide/show, expand, and manually lay out camera tiles - Use region zoom and scroll zoom tools - Verify signed exports offline and optionally confirm certificates with Alta's cloud verification endpoint - Preserve sessions across refreshes with IndexedDB ## Standalone desktop app (Electron) ```bash npm install npm start ``` The Electron shell loads the existing UI through the custom `webavp://app/` protocol, so local assets are served from the packaged app instead of brittle `file://` paths. Certificate verification is bridged through Electron IPC (`window.webavpNative.verifyCertificateOnline`) and performed in the main process. Packaging scripts are included: ```bash npm run dist ``` `electron-builder` is configured for Linux AppImage/deb, macOS dmg, and Windows nsis. Cross-platform packaging still needs to be run on the target OS/build host. ## Web/Python mode ```bash python3 app.py # http://0.0.0.0:5152 ``` The Python stdlib server serves `/`, `/static/*`, and `/api/verify-cert`. There are no Python package dependencies. ## Checks ```bash npm run check xvfb-run -a npm run smoke ``` `check` runs Electron main/preload syntax checks and `py_compile` for the Python server. `smoke` starts Electron, waits for `webavp://app/index.html` to finish loading, then exits automatically. On a desktop session, `npm run smoke` is enough; on headless Linux, use `xvfb-run -a npm run smoke`.