About this project
GridSnap is an open-source desktop utility built with Tauri v2, React 18, TypeScript and Rust. It presents sensitive data — SSH commands, credentials, API keys, connection strings and code snippets — in a virtualized spreadsheet-like grid that can be summoned with a global hotkey (default Ctrl+Shift+Space).
Grid engine: virtualized 1000×26 grid; keyboard navigation (arrow keys, Tab, Enter, Escape); type-to-edit; multi-cell selection by click-drag or Shift+Arrow; copy via hover button or Ctrl+C (TSV format for ranges); Ctrl+V pastes TSV data into the grid; column and row resizing; search across all cells with instant highlighting; manual save with Ctrl+S; and a built-in help panel with shortcuts and tips.
Sheets: multiple sheets with colored tabs; add, remove and rename with delete confirmation; drag to reorder; Ctrl+Tab and Ctrl+Shift+Tab switching; Ctrl+1-9 direct jump; Ctrl+K quick-switch palette; right-click tab actions. Sheets support masking (entire sheet shows ●●●●), per-cell masking/unmasking, and optional per-sheet passwords. Password-protected sheets lock on every tab switch, search is disabled on locked sheets, and deleting a protected sheet requires password confirmation. Brute-force protection imposes a two-minute cooldown after 10 wrong attempts, persisted across restarts.
Security: passwordless by default, with a plaintext JSON vault until a password is set. An optional master password encrypts the vault. Per-sheet passwords use AES-256-GCM with Argon2id key derivation (64MB memory, 3 iterations, 4 parallelism) and store a verification token rather than plaintext hashes. Storage format is salt (16B) | nonce (12B) | ciphertext | tag (16B). Keys are zeroized after use via Rust's zeroize. The app makes no outbound network connections and includes no telemetry or cloud component.
Desktop integration: always-on-top borderless window with custom title bar; system tray with show/hide; configurable global hotkey; close button minimizes to tray; optional launch at system startup; reported bundle size around 8.5MB and RAM around 30MB.
Theming: 11 built-in themes selectable in Settings — Carbon (default), Midnight, Ocean, Aurora, Deep Teal, Light, Velvet, Nordic, Rose, Terminal and Slate. Themes use CSS custom properties and can be extended by adding an entry in src/theme/themes.ts.
Build from source: prerequisites Node.js 18+ and Rust 1.70+. Clone the repository, then in the gridsnap directory run npm install, npm run tauri dev for development, or npm run tauri build for production.
Usage: first launch opens directly; navigate by clicking or arrow keys; edit with double-click or Enter; copy with the hover button or Ctrl+C; paste TSV data with Ctrl+V; save with Ctrl+S; create sheets via the + tab; switch sheets by tab click, keyboard shortcuts, or Ctrl+K search; reorder by dragging tabs; mask sheets or cells via right-click; set sheet or master passwords as needed; hide with Ctrl+Shift+Space or the close button; quit from the tray icon menu.
Tech stack: Tauri v2 shell using the native OS webview; React 18 + TypeScript frontend; CSS Modules with custom properties; custom virtualized grid renderer (prefix-sum plus binary search); Zustand state; Vite 6 build; AES-256-GCM + Argon2id encryption in Rust; encrypted JSON vault on the local filesystem.
The project is MIT licensed.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.