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
Pro Tip: Use descriptive names for snapshots so you remember what they contain.

Cloud Backup

Setting Up

  1. Sign in with Google in the Profile section
  2. Set backup destination to "Local + Cloud"
  3. 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):

  1. User clicks "Sign in with Google"
  2. App opens browser to Google's OAuth page
  3. Local HTTP server receives auth code
  4. 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