vStats Teams: dati di allenamento, valutazione delle decisioni e lavagna strategie per team competitivi
Un'app Windows con backend che acquisisce i dati delle partite di allenamento, valuta ogni kill e ogni morte e raccoglie le strategie del team in un unico posto.
- Ruolo
- progettata e realizzata (app desktop e backend)
- Tipo
- prodotto proprio, app Windows + server
- Stato
- beta, 1.0.0-beta.43; abbonamenti in arrivo
- Piattaforma
- Windows
Problema
I team competitivi si allenano in partite personalizzate private che non compaiono nello storico pubblico. I coach copiano le statistiche a mano, scorrono lunghe registrazioni per trovare i round e tengono le strategie tra disegni e fogli di calcolo sparsi. Serviva un unico strumento che acquisisse ogni partita di allenamento in automatico, spiegasse il valore di ogni decisione, allineasse il video con i dati e tenesse la preparazione di ogni mappa in un solo posto, con i permessi giusti per ogni ruolo.
Risultato
In beta pubblica (1.0.0-beta.43) e scaricabile per Windows su vstats.xyz/download/teams, con aggiornamenti firmati che si installano dall'app quando l'utente lo sceglie. Gli abbonamenti a pagamento sono in arrivo.
Approfondimento tecnico (in inglese)
What I built
I designed and built a Tauri 2 desktop app (Rust core, React 19 + TypeScript interface) and its Node/Express + PostgreSQL backend. While the team plays, the app watches the local game client, read-only. When it sees a full five-a-side custom game, it keeps just the match ID. Afterwards it fetches and uploads the match data, retrying from disk until it gets through. It captures match data, not video. The server computes per-round stats and grades every kill, death, plant and defuse. The app adds a strategy board, a VOD review lab and role-based permissions.
Highlights
CAPTURE
Automatic practice-match capture.
Only qualifying custom games are kept. Unsent uploads wait on disk and retry with back-off, so a lost connection never loses a match.
SCORING
Decision grading.
Rules for trades, opening duels, clutches, saves and throws give every event one of 8 tiers, from brilliant to blunder, in the style of chess-engine move ratings. Each player gets a 0–100 decision score, and stored analyses recompute automatically when the rules change.
VOD SYNC
Video lined up by reading the timer.
The Rust side captures the video player's area of the screen and reads the on-screen round timer with a custom digit reader, then lines the YouTube stream up with the match rounds, including streams that cover several maps.
EDITOR
A strategy drawing board.
12 tools (arrows, zones, vision cones, barriers and more), up to 7 phases per strategy, and server-side validation of every board.
ACCESS
Roles and team data.
6 roles (manager, coach, analyst, IGL, player, sub) with a permission table. Private matches are visible only to staff, and uploads are de-duplicated per team.
BILLING
Trials and subscriptions.
Free-trial applications reviewed by hand, and a Stripe subscription path whose webhook sets the team's access with a grace period. Subscriptions are opening soon.
How it works
- Detect a qualifying practice match.
- Keep only the match ID during play.
- Fetch the match data after the game.
- Queue it on disk.
- Upload it, retrying until it succeeds.
- The server computes stats and grades decisions.
- Results appear in the performance, strategy and VOD screens.
Stack
- Tauri 2
- Rust
- tokio
- rustls
- keyring
- Windows screen capture
- React 19
- TypeScript
- Vite
- Vitest + Testing Library
- Node.js/Express
- PostgreSQL
- Redis
- Stripe
- YouTube Data API
- spreadsheet import
By the numbers
- ~28,900lines in the desktop app
- 71interface-to-core commands
- 53team API routes
- 6Postgres migrations
- 35 + 43Rust tests + interface tests
- 10server test files
Outcome
In public beta (1.0.0-beta.43) and available to download for Windows at vstats.xyz/download/teams, with signed in-app updates that install when the user chooses. Paid subscriptions are opening soon.
Ti serve qualcosa di simile? Chiedi un preventivo gratuito.
Preventivo gratuitoVALORANT e Riot Games sono marchi di Riot Games, Inc. Questo progetto non è affiliato a Riot Games né approvato da Riot Games.
VALORANT and Riot Games are trademarks of Riot Games, Inc. This project is not affiliated with or endorsed by Riot Games.