A desktop application for tracking your Dota 2 match history and analyzing performance against personal goals.
Dota Keeper helps you improve your Dota 2 gameplay by automatically fetching your match data and analyzing it against custom goals you define. Whether you want to maintain a specific win rate, reduce deaths, or improve your farm, Dota Keeper provides the insights you need.
- Automatic Match Tracking: Fetch and store your complete match history using the OpenDota API
- Custom Goals: Define personalized performance goals (e.g., "Maintain 55% win rate on carry heroes", "Average less than 5 deaths per game")
- Performance Analysis: Track your progress against goals with detailed statistics
- Local Data Storage: All your data is stored locally in a SQLite database
- Cross-Platform: Built with Tauri for native performance on Windows, macOS, and Linux
- Tauri - Lightweight desktop application framework
- Rust - High-performance backend
- SQLite - Local database storage
- OpenDota API - Match data source
rusqlite- SQLite database interfacereqwest- HTTP client for API requestschrono- Date and time handlingserde- Serialization/deserialization
- Clone the repository:
git clone https://github.com/yourusername/dota-keeper.git
cd dota-keeper- Install frontend dependencies:
yarn install- Install Rust dependencies (automatic when building):
yarn tauri buildStart the development server with hot-reload:
yarn tauri devThis will:
- Start the Vite dev server for the frontend
- Compile and run the Rust backend
- Open the application window
yarn dev- Start Vite dev server onlyyarn build- Build the frontendyarn preview- Preview the production buildyarn check- Run Svelte type checkingyarn check:watch- Run type checking in watch modeyarn tauri dev- Run the app in development modeyarn tauri build- Build the production application
dota-keeper/
├── src/ # SvelteKit frontend
│ ├── routes/ # Application routes
│ └── lib/ # Shared components and utilities
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── main.rs # Application entry point
│ │ ├── database.rs # Database operations
│ │ ├── opendota.rs # OpenDota API integration
│ │ └── settings.rs # User settings management
│ └── Cargo.toml # Rust dependencies
├── static/ # Static assets
└── package.json # Node.js dependencies
- Launch Dota Keeper
- Enter your Steam ID or Dota 2 profile URL
- The app will automatically fetch your match history
- Navigate to the Goals section
- Click "Create New Goal"
- Define your criteria (hero type, win rate, KDA, GPM, etc.)
- Save and track your progress
- Dashboard: Overview of recent performance
- Match History: Detailed view of all tracked matches
- Goal Progress: Track how you're performing against each goal
- Hero Statistics: Per-hero performance breakdown
All data is stored locally on your machine:
- Windows:
%LOCALAPPDATA%\DotaKeeper\ - macOS:
~/Library/Application Support/DotaKeeper/ - Linux:
~/.local/share/DotaKeeper/
The SQLite database contains:
- Match history and statistics
- Custom goals and configurations
- User settings
Create a production build:
yarn tauri buildThis will generate platform-specific installers in src-tauri/target/release/bundle/.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
For bugs, feature requests, or questions, please open an issue on GitHub.
Note: This application is not affiliated with or endorsed by Valve Corporation.