Not just chat.
Encrypt any data.
The same cryptographic primitives — one hook, one pattern — work for healthcare records, legal documents, support conversations, financial PII, and more.
Healthcare
HIPAAHIPAA-compliant patient data
Encrypt before it leaves the browser.
Patient intake forms, lab results, and clinical notes are encrypted on the patient's device before reaching your server. Your database stores only ciphertext — a breach exposes nothing readable.
Without Encra
Storing PHI in plaintext creates HIPAA liability even if you encrypt the database volume.
useE2EForm()Encrypt form fields client-side before submission
encryptField()Per-column database encryption without a key server
useE2EFile()Encrypt medical images and PDFs before upload
const { encryptFields } = useE2EForm({ apiKey, userId })
const payload = await encryptFields({
name: formData.get('name'),
dob: formData.get('dob'),
diagnosis: formData.get('diagnosis'),
}, 'doctor-userId')
// payload values are ciphertext — safe to store or transmit
await fetch('/api/patient', { method: 'POST', body: JSON.stringify(payload) })“Only the doctor can read the diagnosis. Your database admin cannot.”
Legal
Attorney–clientAttorney–client privilege, enforced cryptographically.
Not by policy — by math.
Client communications and document submissions are encrypted end-to-end. Only the assigned attorney can decrypt. Even if your platform is subpoenaed, the server has no plaintext to hand over.
Without Encra
A subpoena against your platform would expose every client communication stored in plaintext.
useE2EChat()Private encrypted messaging between client and attorney
useE2EFile()Secure document upload — contracts, evidence, filings
useE2EForm()Encrypt intake forms and case notes before submission
const { encryptFile } = useE2EFile({ apiKey, userId })
// Client encrypts the document for their attorney
const encrypted = await encryptFile(contractPDF, 'attorney-userId')
// Upload the ciphertext — only the attorney can decrypt it
await uploadToServer(encrypted)“A subpoena against your platform returns encrypted blobs. The plaintext never existed on your server.”
Customer Support
SaaSPrivate support chat, out of the box.
Your users deserve confidentiality.
Drop E2E encryption into your support channel with one hook. Customers share sensitive information — account numbers, personal details — knowing only the assigned support agent can read it.
Without Encra
Support conversations are stored in plaintext, readable by any employee or attacker who compromises your system.
useE2EChat()One hook for encrypted real-time support messaging
const { messages, isReady, sendMessage } = useE2EChat({
apiKey,
userId: currentUser.id,
})
// Customers and agents chat — nobody else can read it
// not your DB admin, not your cloud provider
<button
disabled={!isReady}
onClick={() => sendMessage(agentId, inputText)}
>
Send
</button>“Add it in an afternoon. Your support team gets normal UX — your users get Signal-level privacy.”
Fintech
PCI / SOC 2Encrypt PII at the field level.
Reduce your compliance scope dramatically.
Encrypt account numbers, SSNs, and financial records with a per-field symmetric key. Store ciphertext in your existing database schema. No schema changes, no new infrastructure — just smaller compliance scope.
Without Encra
Storing financial PII in plaintext columns means every database breach is a regulatory event.
encryptField()Field-level encryption with no server or key exchange required
useE2EForm()Encrypt financial form submissions before they hit your API
import { encryptField, decryptField, generateFieldKey } from '@encra/core'
// Run once, store the key in your secrets manager
const key = await generateFieldKey()
// Encrypt before INSERT
const encSsn = await encryptField(user.ssn, key)
await db.query(
'INSERT INTO users (ssn_ct, ssn_nonce) VALUES ($1, $2)',
[encSsn.ciphertext, encSsn.nonce]
)
// Decrypt at read time
const ssn = await decryptField({ ciphertext, nonce }, key)“No key server needed. No network calls. Just encrypt the column before INSERT.”
HR & Payroll
GDPREmployee data that only HR can read.
Enforce data minimisation by default.
Salary data, performance reviews, and disciplinary records are encrypted for the HR team. Engineering, finance, and other departments cannot access them — even with full database access.
Without Encra
Salary data and performance reviews sitting in plaintext violate GDPR data minimisation requirements.
useE2EForm()Encrypt performance review submissions end-to-end
encryptField()Encrypt salary columns — readable only by payroll
// Only HR's userId can decrypt these fields
const payload = await encryptFields(
{
salary: '120000',
review: 'Exceeds expectations. Promotion recommended.',
equity: '0.05%',
},
'hr-manager-userId'
)
await submitToHRSystem(payload)“Engineering can query the database. They still can't read salaries.”
Enterprise
Zero TrustEncrypt internal tools and audit trails.
Zero trust starts with zero plaintext.
Internal communications, audit logs, and sensitive configuration — encrypted between authenticated employees. No insider threat can read data they don't have the key for. Self-host the key server on your own infra for full control.
Without Encra
Insider threats are the leading cause of enterprise data breaches. Plaintext access controls are not enough.
useE2EChat()Encrypted internal messaging between team members
useE2EFile()Encrypt sensitive documents and configuration files
@encra/serverSelf-host the key server on your own infrastructure
// Self-hosted key server — your infrastructure, your control
const { messages, sendMessage } = useE2EChat({
apiKey,
userId: employee.id,
serverUrl: 'https://keys.your-company.com', // self-hosted
})“Run the key server on your infra. Your cloud provider never sees the keys.”
Your use case. One SDK.
Healthcare, legal, finance, SaaS — the same hooks, the same primitives. Start with chat or field encryption and add more as you need them.