The plain-language version — written for you, not for lawyers. If a claim on this page is unclear, email admin@aksho.in and we'll walk you through it.

The short version

Your studio's data is encrypted on your device with a key derived from your password. Aksho's servers store only ciphertext. Even with full database access, we cannot decrypt your shoot names, client info, or expense amounts.

If you forget your password, your 6-digit PIN unlocks it. If you forget both, your data is permanently inaccessible — to you and to us. That's the price of true privacy.

What gets encrypted

The entire studio data blob, including:

  • Shoot details (client name, date, package, billing, payments)
  • Client profiles (name, phone, email, notes, tags)
  • Expense records (vendor, amount, category)
  • Vendors, gadgets, subscriptions, loans, capital entries
  • Business settings (studio name, packages, expense categories)

Everything you create, edit, or see in the dashboard.

What we can still see (metadata)

Encryption protects content, not the fact that you exist:

  • Your email address (needed for sign-in)
  • The size of your encrypted blob (rough proxy for how much data you have)
  • Sign-up time, last-login time
  • That you have a row in our tables — but not what's in it

If perfect metadata privacy matters to you, Aksho is not the right tool — that's Tor-grade engineering and would require giving up account recovery entirely.

The cryptographic primitives

  • Content encryption: AES-256-GCM via the browser's native Web Crypto API. Authenticated encryption — any tampering breaks the integrity tag and decryption refuses.
  • Password → key: Argon2id with t=4, m=128MB, p=1. ~800ms per derivation. This is what makes brute-forcing your password expensive — the attacker has to do 128MB of memory work for every guess.
  • PIN → key: Same Argon2id, heavier params (t=10, m=128MB) because the 6-digit space is small. ~2s per derivation. Combined with server-side rate limiting (5 wrong → 1h lockout, 10 → 24h, 20 → permanent), a casual attacker can't brute-force it.
  • How the keys connect: We generate a random 256-bit Data Encryption Key (DEK) once at signup. The DEK is wrapped twice (once by the password-derived key, once by the PIN-derived key) and stored on our servers. The raw DEK never leaves your device.

Things we explicitly don't do

  • No backup of your key. If we kept one, we could decrypt your data. We don't.
  • No third-party data sharing. Not Google, not Meta, not anyone. Your encrypted blob lives only on our Supabase database in Mumbai.
  • No analytics on your content. We don't track what you do inside the app — partly because we couldn't even if we wanted to.
  • No password recovery from us. If you forget your password, your PIN is the only path back. We have no "reset to default" button.

Honest limits — what we don't protect against

  • A compromised end-user device. If someone has your unlocked browser, they have your data. E2EE is not anti-malware.
  • A weak password + lost PIN. If you pick "password123" and lose your PIN, brute-forcing the password becomes feasible. Pick something hard.
  • You forgetting both. Already mentioned. Data is cryptographically gone.
  • A malicious bundle delivery. If an attacker compromised Vercel and shipped tampered JavaScript to your browser, they could exfiltrate your decrypted data. Mitigations: HTTPS, strict Content Security Policy, plus a planned move to signed Subresource Integrity hashes.
  • Nation-state level adversaries. Argon2id with our parameters is strong against everyone except organizations with massive GPU farms and unlimited time. If you're running a journalist or activist operation that worries about that threat tier, you need more than Aksho.

How it compares to WhatsApp

Both Aksho and WhatsApp use end-to-end encryption with keys that live on your device. The Signal Protocol that WhatsApp uses is heavier — designed for live messaging with forward secrecy. Aksho doesn't need that complexity (we're storing data, not routing messages between two parties), so we use the simpler AES-GCM + Argon2id combination.

The key difference: WhatsApp also has a 6-digit PIN backup option (or a 64-character key). Aksho works the same way — you have your password as the primary unlock, and the PIN as the recovery path. Familiar mental model, same security guarantees.

Subpoena / legal compliance

If a court orders Aksho to produce your data, we will comply with what we have: your encrypted ciphertext, your email address, and authentication metadata. We cannot produce plaintext because we cannot decrypt the ciphertext. We have no key, no key escrow, no master backup.

We will notify you of a legal request unless legally prohibited from doing so.

Verify it yourself

You don't have to take our word for any of this — you can see the encryption at work from your own browser.

Open your browser's DevTools, go to Network, and watch the request to user_data on the next dashboard load — the response body is a JSON object with v, iv, and ct fields. That's an encrypted envelope. The plaintext exists only after your browser decrypts it locally.