Skip to content
- UI layer: Dashboard, filters, modals, settings, passphrase gate.
- Vault layer: in-memory unlock state, DEK management, encrypt/decrypt operations.
- Storage layer: Supabase tables for credentials, categories, and vault config.
- User enters secret in credential form.
- Vault must be unlocked.
- Secret payload is JSON-serialized and encrypted via AES-GCM using in-memory DEK.
- Encrypted blob is written to
credentials.secret_blob.
- Decryption happens in browser after explicit reveal action.
src/main.tsx initializes CSP/security hooks and renders app.
src/App.tsx wires providers (query, theme, router).
src/components/SelfHostedDashboard.tsx manages configured/unconfigured states and dashboard routes.
SelfHostedDashboard: app-level view and filtering state.
PassphraseGate: vault lock/unlock UX and first-time setup branching.
VaultManager: orchestrates storage config + secure vault runtime.
SecureVault: cryptographic operations and auto-lock timer.