How It Works
The app maintains a local cache file at~/Library/Application Support/salesgraph-desktop/cache.json. This file is encrypted using Electron’s safeStorage API, which leverages the macOS Keychain for key management.
The cache stores two types of data:
| Data | Purpose |
|---|---|
| Session | Your authentication state, so the app can display your profile immediately on launch |
| Meetings | Your meeting list, so meetings are visible even before the API responds |
Loading Strategy
On each app launch and when navigating to the meeting list:- Cache first — Data is loaded from the local encrypted cache and displayed immediately.
- API refresh — The app fetches fresh data from the server in the background.
- Seamless update — When the API response arrives, the UI updates with the latest data.
Cache Updates
The cache is updated whenever fresh data arrives from the API:- After a successful session refresh
- After fetching the latest meeting list
- After a recording is completed
Encryption
All cached data is encrypted at rest:- Encryption method — Electron’s
safeStorage.encryptString()anddecryptString() - Key storage — Encryption keys are managed by the macOS Keychain, not stored on disk
- Scope — Each macOS user account has its own Keychain-backed keys
