Analyze. Scout. Improve.
OpenVolleyScout is a local-first web application for volleyball match setup, scouting, tactical-system editing, and early match reporting.
The application runs entirely in the browser. Match projects, team archives,
rosters, and competition names are persisted on the device with IndexedDB.
Locale and defense-system editor state are stored in localStorage.
Live demo: https://napo.github.io/openvolleyscout
The project is under active development. Some workflows are complete enough to use as foundations, while analysis and advanced tactical automation are still evolving.
Download the latest release for your platform:
| Platform | Download |
|---|---|
| Windows (64-bit) | .exe installer |
| macOS (Intel) | .dmg installer |
| macOS (Apple Silicon) | .dmg installer |
| Linux (Ubuntu/Debian) | .deb package |
| Linux (RedHat/Fedora) | .rpm package |
| Linux (Universal) | AppImage |
| Android | .apk |
No installation needed — use the live demo directly in any modern browser.
See all releases for older versions.
- Create and manage archived teams and rosters.
- Create match projects from competition metadata, selected teams, and match-specific rosters.
- Configure match-level scouting settings such as set targets and tie-break targets.
- Start sets from selected lineups and serving team.
- Record rally events, touches, points, score corrections, set endings, and match endings through an event log.
- Persist scouting progress back into the active
MatchProject. - Generate live quick stats, set summaries, rally summaries, and DataVolley-like rally strings from recorded events.
- Edit and persist a simple defense-system layout in the browser.
- React 18
- TypeScript
- Vite
- React Router
- Zustand
- Dexie / IndexedDB
Install dependencies:
npm installStart the development server:
npm run devBuild for production:
npm run buildPreview a production build:
npm run previewRun the current validation script:
npm testnpm test currently runs scripts/validate-match-stats.mjs, which bundles and
executes the match-statistics fixture validation.
The app uses hash routing, so routes are rendered under #/....
#/- landing page#/teams- archived team and roster management#/match- match setup workflow#/scouting- live scouting workflow#/systems- defense-system editor#/analysis- placeholder for future analysis views#/load-data- saved match project loading#/settings- locale and local-data actions#/about- project information
Start with docs/README.md.
Important entry points:
- Architecture
- Data Model
- Domain Model
- Persistence
- Scouting Architecture
- Tactical Systems
- Code Structure
- Developer Guidelines
Implemented foundations:
- local match and archive persistence
- match creation and readiness validation
- event-sourced scouting session replay
- scouting persistence into
MatchProject.eventsandMatchProject.scoutingSession - match statistics builder and validation fixture
- simple defense-system editor backed by
localStorage - English and Italian UI translations with persisted locale choice
Still in progress:
- full DataVolley export compatibility
- advanced player suggestion from tactical systems
- persistent tactical-system repository in IndexedDB
- full analysis screens
- broader automated test coverage










