We Can't Read Your Data. By Design.
Your vault is encrypted on your device before it reaches our servers. Here is exactly how our architecture works, and how you can verify it yourself.
Click badges to verify.
Traditional Budget Apps
- ✗Can read your data: They hold the encryption keysExample of what they see:Starbucks Coffee - $4.50Category: Coffee
- ✗Server-side encryption: Data decrypted on their servers
- ✗If breached: Your transactions are exposed
- ✗Employee access: Staff can view your spending
Sunny Budget
- ✓Cannot read your data: Only you have the keysWhat we see on our servers:9f7a2c1b4d6e8f0a3c5b7d9e2f1a4b6c...[Encrypted - Unreadable]
- ✓Client-side encryption: Encrypted in your browser
- ✓If breached: Only encrypted gibberish is exposed
- ✓Zero access: No one can view your data without your password
How Most Budget Apps Work
Traditional budgeting apps typically store transaction details in structured database columns that their servers can read and process.
SELECT amount, merchant_name, category, date
FROM transactions
WHERE user_id = '123'Their servers can decrypt and read: "Starbucks", "$4.50", "Coffee", "Jan 15, 2026"
This approach enables convenience but means the company (and anyone who breaches their servers) can read your complete financial history. They encrypt data at rest, but they hold the keys.
How Sunny Budget Works Differently
We store your entire financial workspace as an encrypted blob that only you can decrypt. Your password never leaves your browser. All encryption happens on your device before anything syncs to our servers.
model Vault {
id String @id @default(cuid())
ownerId String // Who owns it (not what's inside)
// All your financial data, encrypted
ciphertext Bytes // ← Everything you care about is here
iv Bytes // Initialization vector
version Int // Schema version
updatedAt DateTime
createdAt DateTime
}Notice what's missing? There are no columns for amount, merchant, category, or account. That is all encrypted inside the ciphertext blob.
Encrypted (Inside Vault Blob)
- •All transactions (amounts, merchants, dates, notes)
- •All categories (names, budgets, rules)
- •All accounts (names, balances)
- •Everything you actually care about
Plaintext (Metadata Only)
- •Your email address
- •Vault ownership (who owns which vault)
- •Encryption metadata (initialization vector and schema version for decryption)
- •Timestamps (when saved)
Try It Yourself: Live Encryption Demo
This demo uses actual AES-256-GCM encryption with PBKDF2 key derivation - the same algorithms we use in production. Edit any transaction below to see how all your transactions are bundled together into one encrypted vault blob (not stored row-by-row):
Note: This demo shows hex-encoded ciphertext for readability. The underlying encryption is AES-256-GCM with PBKDF2 key derivation, which is cryptographically secure. The key concept: your data is scrambled before it reaches our servers.
How the Encryption Works
When you create an account, we use PBKDF2 (Password-Based Key Derivation Function 2) to generate a cryptographic key from your password right in your browser. This key encrypts your vault using AES-256-GCM before it ever reaches our servers.
Stays in your browser. Generates the encryption key that locks your vault.
Happens client-side before sync. We only store the encrypted ciphertext.
No password from you = no vault access for us (or anyone else).
What This Means For You
What You Gain
- ✓Your transactions are unreadable even if our database is breached
- ✓Your data cannot be sold, analyzed, or shared because we literally cannot access it
- ✓No employee can view your spending habits
- ✓No government subpoena can force us to hand over readable data we don't have
The Trade-offs (We're Honest About Them)
- •We can't recover your password. If you lose it, your data is permanently inaccessible
- •We can't provide server-side AI insights. All processing happens locally on your device
- •Customer support can't troubleshoot your budget without you sharing screenshots
- •No automatic bank connections. You import transactions manually via CSV
These aren't limitations. They're guarantees. We chose privacy over convenience.
Verify It Yourself
Don't take our word for it. Here's how to confirm that your data is encrypted before it leaves your browser.
Method 1: Browser Developer Tools
Open Developer Tools
Right-click anywhere on Sunny Budget and select Inspect. Go to the Network tab.
Trigger a Save
Add a transaction or update your budget. Look for a network request to /api/vault.
Inspect the Payload
Click the request and view the Payload or Request Body. You will not find your transaction names or amounts, only encrypted strings.
Method 2: Network Analysis (Wireshark)
For network engineers who want to verify our transport security (TLS) and ensure no side-channel connections are being made.
0010 a1 b2 c3 d4 e5 f6 01 23 ... [Encrypted Application Data]
Ready to take control?
Join thousands of users who value their financial privacy.