npm install @nodatachat/sdk
ערכה מכונה-למכונה
חמש שורות קוד. אפס dependencies. הצפנה עיוורת לכל מערכת.
השרת שלכם לא צריך לראות מה שהוא לא צריך לדעת.
התקנה
npmbash
npm install @nodatachat/sdk
אפס תלויות. עובד ב-Node.js, Bun, Deno, Cloudflare Workers — כל מה שיש לו fetch.
5 שורות — והמערכת שלכם עיוורת
הצפנת שדה, אחסון, פענוח. השרת שלנו לא שומר כלום.
TypeScriptts
import { NoData } from '@nodatachat/sdk';
const nd = new NoData({ apiKey: 'sk_live_...' });
// Encrypt — server-blind
const { ciphertext } = await nd.encrypt({
field: 'credit_card',
value: '4111111111111111',
});
// Store `ciphertext` in YOUR database. NoData stores nothing.
// Decrypt — audited
const { value } = await nd.decrypt({
field: 'credit_card',
ciphertext,
requester: 'billing-service',
});
BATCH100 שדות. קריאה אחת.
const result = await nd.batchNative([
{ op: 'encrypt', field: 'phone', value: '0501234567' },
{ op: 'encrypt', field: 'email', value: 'david@company.com' },
{ op: 'encrypt', field: 'id', value: '123456789' },
{ op: 'decrypt', field: 'ssn', ciphertext: 'aes256gcm:v1:...' },
]);
// result.ok === 4, result.failed === 0
או — הצפנת אובייקט שלםts
const encrypted = await nd.encryptObject(
{ name: 'David', phone: '050...', email: 'd@x.com', age: 30 },
['phone', 'email']
);
// { name: 'David', phone: 'aes256gcm:v1:...', email: 'aes256gcm:v1:...', age: 30 }
מודולים
🔐encrypt / decrypt
Field-level blind relay. Server encrypts, returns ciphertext. Content never stored.
nd.encrypt()nd.decrypt()nd.batchNative()nd.encryptObject()
🔗channel
Secure tunnels between systems. E2E encrypted. Verification codes. Burn-after-read.
nd.channel.create()nd.channel.send()nd.channel.receive()nd.channel.proof()
🪝webhook
Receive webhooks encrypted at rest. PBKDF2 + AES-256-GCM. You hold the key.
nd.webhook.create()nd.webhook.events()nd.webhook.list()
🔥deliver
Burn-after-read delivery. One link. One view. Gone.
nd.deliver.send()nd.deliver.burn()nd.deliver.read()
📋evidence
SOC-ready audit trail. Metadata only — never content. Proof certificates.
nd.evidence.query()nd.evidence.certificate()nd.evidence.verify()
🏦vault
Zero-knowledge storage. You encrypt client-side. Server stores blindly.
nd.vault.create()nd.vault.read()nd.vault.delete()
M2Mערוץ מאובטח — מערכת למערכת
שתי מערכות צריכות להחליף מידע רגיש. אף אחת לא סומכת על התשתית של השניה. NoData באמצע — עיוור.
// System A — creates a channel
const ch = await nd.channel.create({
ttl: '1h',
requireVerification: true,
});
// System B — sends credit card data
await nd.channel.send({
token: ch.channel_token,
data: { card: '4111111111111111', cvv: '123', exp: '12/28' },
burnAfterRead: true,
});
// System A — receives
const result = await nd.channel.receive({
token: ch.channel_token,
verificationCode: '482901',
});
const card = JSON.parse(result.data);
System A ──── channel.create() ────→ NoData ←──── channel.send() ──── System B
השרת מעביר בייטים מוצפנים. לא רואה את התוכן. לא שומר תוכן.
PLUGINשורה אחת — Express / Fastify
מערכת גדולה? לא צריכים לשכתב. שורה אחת של middleware — כל response עם שדות רגישים מוצפן אוטומטית.
Expressts
import express from 'express';
import { nodataExpress } from '@nodatachat/sdk/express';
const app = express();
app.use('/api/customers', nodataExpress({
apiKey: 'sk_live_...',
encryptFields: ['phone', 'email', 'id_number'],
}));
// Every response with phone/email/id_number → auto-encrypted
// No code changes in your routes
Fastifyts
import Fastify from 'fastify';
import { nodataFastify } from '@nodatachat/sdk/fastify';
const app = Fastify();
app.register(nodataFastify, {
apiKey: 'sk_live_...',
encryptFields: ['phone', 'email', 'id_number'],
});
AUTHService Accounts — מפתחות מוגבלים
מפתח ראשי (sk_live_) יוצר service accounts מוגבלים — scopes, rate limit, IP whitelist, תוקף.
// Master key creates a scoped service account
const res = await fetch('/api/v1/service-account', {
method: 'POST',
headers: { Authorization: 'Bearer sk_live_MASTER_KEY' },
body: JSON.stringify({
name: 'payment-service',
scopes: ['encrypt', 'decrypt'],
rate_limit_per_minute: 500,
daily_quota: 100000,
expires_in_days: 90,
allowed_ips: ['10.0.0.0/8'],
}),
});
// → { key: "svc_live_abc123..." } — shown ONCE
sk_live_מפתח ראשי
כל ה-scopes, יוצר child keys
svc_live_Service account
Scopes מוגבלים, IP whitelist, תוקף
כל שפה שמדברת HTTP
import { NoData } from '@nodatachat/sdk';
const nd = new NoData({ apiKey: process.env.NODATA_API_KEY! });
const { ciphertext } = await nd.encrypt({
field: 'ssn',
value: '123-45-6789',
});
// Store in your DB. NoData stores nothing.
await db.query('UPDATE users SET ssn = $1 WHERE id = $2', [ciphertext, userId]);
ארכיטקטורה
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Your App │ ──────→ │ NoData API │ ──────→ │ Your DB │
│ │ │ │ │ │
│ plaintext │ │ ciphertext │ │ ciphertext │
│ lives here │ │ passes thru │ │ stored here│
│ │ │ stores: 0 │ │ │
└─────────────┘ └──────────────┘ └─────────────┘
NoData הוא ממסר, לא כספת. מידע עובר, מוצפן, ויוצא. השרת עיוור בתכנון — לא במדיניות.
למה
🚫אפס plaintext בשרתים שלנו — אף פעם
🔑אפס אחסון מפתחות — אתם מחזיקים הכל
📦אפס data retention — אנחנו ממסר, לא מחסן
📋מסלול ביקורת מלא — כל פעולה מתועדת (מטאדאטה בלבד)
✅SOC 2 ready — endpoint ראיות = ידידותי לביקורת
0️⃣אפס dependencies — רק fetch
הצפנה ופענוח ללא הגבלה · חינם לנצח. בלי הרשמה. בלי כרטיס אשראי.
@nodatachat/sdk v1.0.0 · 14.9 KB · MIT