Checkpoint Documentation
Quick guide to protecting your game saves.
Quick Start
1. Add Your First Game
- Click "Add Game"
- Enter game name
- Select save folder location
- Optional: Add executable name for process checking
2. Create a Snapshot
- Click on your game card
- Click "Create Snapshot"
- Choose backup destination: Local or Local + Cloud
- Name it (e.g. "Before Boss Fight")
3. Restore a Save
- Click restore button on any snapshot
- Current save is auto-backed up first
- Game must be closed to restore
Cloud Backup
Setting Up
- Sign in with Google in the Profile section
- Set backup destination to "Local + Cloud"
- Snapshots automatically upload to your Google Drive
Where Are Cloud Saves Stored?
Cloud backups are stored in Google's appDataFolder - a special hidden folder in your Google Drive.
- Not visible in your main Drive view
- Doesn't count toward your Drive storage limit
- Only accessible by this app
- Cross-device - log in on any computer to access saves
Why appDataFolder?
This is the standard way apps store user data in Google Drive. It keeps your saves:
- Separate from your personal files
- Protected from accidental deletion
- Private (other apps can't access them)
FAQ
Where are local backups stored?
By default: ~/checkpoint/ on your home drive. You can change this in Settings.
Can I access cloud saves from another computer?
Yes! Just sign in with the same Google account on the other computer. Your cloud saves will appear.
Does deleting a game delete my actual saves?
No. Deleting from Checkpoint only removes the entry and backups. Your actual game saves remain untouched.
How much space do snapshots use?
Each snapshot is a complete copy of your save folder. The app shows the size of each snapshot.
Why can't I restore while the game is running?
Safety feature. The game might be writing to save files, which could corrupt them. Close the game first.
Technical Details
Tech Stack
- Frontend: React + TypeScript + Vite
- Backend: Rust + Tauri v2
- UI: Custom CSS with Lucide icons
- Process Checking: sysinfo crate
- Cloud: Google Drive API v3
Architecture
Checkpoint uses Tauri's multi-process architecture:
- WebView Process: Runs the React frontend
- Main Process: Rust backend handling file operations
- Isolation: Frontend can't access filesystem directly
How Storage Works
Snapshots (Game Backups)
Your game snapshots are stored here:
- Linux:
~/checkpoint/ - Windows:
%USERPROFILE%\checkpoint\
~/checkpoint/
├── [game-id-1]/
│ ├── [timestamp-1].zip
│ ├── [timestamp-2].zip
│ └── ...
├── [game-id-2]/
│ └── ...
└── ...
Snapshot Format
Each snapshot is a ZIP file containing:
- All files from the save folder
- Directory structure preserved
- Compressed to save space
Configuration
App configuration is stored separately in standard system locations:
- Linux:
~/.config/checkpoint/config.json - Windows:
%APPDATA%\checkpoint\config.json
Note: These locations cannot be changed to prevent cloud sync issues.
Google Drive Integration
Authentication
Uses OAuth 2.0 with PKCE (Proof Key for Code Exchange):
- User clicks "Sign in with Google"
- App opens browser to Google's OAuth page
- Local HTTP server receives auth code
- Tokens stored locally (never sent to our servers)
Permissions
The app requests minimal permissions:
https://www.googleapis.com/auth/drive.appdata- Access appDataFolder only- No access to your photos, documents, or other Drive files
Data Flow
Your Computer
↓
Create ZIP
↓
Google Drive API (encrypted transfer)
↓
Your Google Drive
(stored in appDataFolder - hidden from main view)
Why We Can't See Your Data
- No backend servers - app talks directly to Google
- OAuth tokens stored only on your device
- We don't have Google API credentials to access your data
- Open source - you can verify no tracking code exists
Privacy & Security
100% Private Design
- No servers: App works entirely on your device
- No analytics: No tracking, no metrics collection
- No accounts: Optional Google sign-in only for cloud backup
- Local-first: Works completely offline without cloud
Security Measures
- Tauri v2 capability system restricts file access to necessary folders only
- Google Drive tokens stored securely in OS keychain
- All file operations happen locally on your machine
What We DON'T Collect
- ❌ Game lists or save file contents
- ❌ Usage statistics or telemetry
- ❌ Crash reports (unless you manually submit)
- ❌ IP addresses or location data
- ❌ Any personal information
Building from Source
Prerequisites
Linux (Ubuntu/Debian)
sudo apt update
sudo apt install -y \
libwebkit2gtk-4.1-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
patchelf \
pkg-config \
build-essential
All Platforms
Development Setup
# Clone repository
git clone https://github.com/rzinak/checkpoint.git
cd checkpoint
# Install dependencies
npm install
# Run in development mode
npm run tauri-dev
# Build for production
npm run tauri-build
Project Structure
checkpoint/
├── src/ # React frontend
│ ├── components/ # UI components
│ ├── lib/ # API, types, i18n
│ └── App.tsx # Main app
├── src-tauri/ # Rust backend
│ ├── src/ # Rust source
│ │ ├── commands.rs # Tauri commands
│ │ ├── lib.rs # Core logic
│ │ └── ...
│ ├── Cargo.toml # Rust deps
│ └── tauri.conf.json # Tauri config
├── src/i18n/ # Translations (en, pt, es)
└── docs/ # Website & documentation
Development Notes
- TypeScript interfaces use snake_case to match Rust structs
- Tauri commands handle all file system operations
- Frontend never accesses filesystem directly
- See capabilities in
src-tauri/capabilities/
Troubleshooting
Common Issues
"Failed to create snapshot"
- Check that save folder exists and is readable
- Ensure you have write permission to backup location
- Check available disk space
"Cannot sign in with Google"
- Ensure default browser can open
- Check firewall isn't blocking localhost callback
- Try signing in again - tokens expire
"Game shows as running but isn't"
- Check task manager for lingering processes
- Executable name might have changed in game update
Getting Help
- GitHub Issues - Bug reports & feature requests
- Check the main website for latest updates