@smart-secure/nextjs
v1.1.0
Published
Server SDK for SmartSecure Document Engine
Readme
@smart-secure/nextjs
The official Next.js Server SDK for the SmartSecure Document Engine.
This package provides a secure, server-side bridge between your Next.js application and the SmartSecure Python Encryption Engine, allowing you to easily generate "Kotak Berkunci" (AES-256 Encrypted Decoys) and integrate them into your Cloudflare R2 workflows.
🚀 Features
- Server-Side Only: Designed securely for Next.js App Router (Server Actions & Route Handlers). Credentials never leak to the browser.
- Drop-in Integration: Automatically detects environment variables for zero-config initialization.
- TypeScript Ready: Fully typed parameters and responses for an optimal developer experience.
- File & Buffer Support: Easily handles raw
ArrayBufferdata from uploaded files or fetched URLs.
📦 Installation
npm install @smart-secure/nextjs
# or
bun add @smart-secure/nextjs
# or
yarn add @smart-secure/nextjs⚙️ Configuration
Add the following environment variables to your Next.js .env or .env.local file:
# Required: Your secure client ID to authenticate with the Python Engine
SMART_SECURE_CLIENT_ID="your_actual_client_id"
# Optional: Defaults to http://localhost:8000
SMART_SECURE_API_URL="[https://your-python-engine-url.com](https://your-python-engine-url.com)"💻 Usage (Next.js Server Actions)
This SDK is designed to be used inside Next.js Server Actions. It takes a raw PDF, passes it to your Python Engine for encryption, and returns the encrypted bytes ready for Cloudflare R2 storage.
'use server'
import { SmartSecureServer } from '@smart-secure/nextjs';
// 1. Initialize the SDK
const secureSdk = new SmartSecureServer();
export async function secureAndUploadDocument(formData: FormData) {
const file = formData.get('file') as File;
const fileBuffer = await file.arrayBuffer();
// Generate a unique decryption key for this document
const documentKey = crypto.randomUUID();
try {
// 2. Pass to the Python Engine for Military-Grade Encryption
const encryptedBytes = await secureSdk.encryptDocument({
fileBuffer: fileBuffer,
documentKey: documentKey
});
// 3. Upload the resulting "Kotak Berkunci" to Cloudflare R2
const nodeBuffer = Buffer.from(encryptedBytes);
// ... call your R2 upload function here ...
return {
success: true,
documentKey: documentKey // Save this to your Database!
};
} catch (error) {
console.error("Encryption failed:", error);
return { success: false };
}
}🔒 Security Note
This SDK relies on the crypto library and Node.js Buffer. It must be executed on the server. Attempting to run this in a Client Component ("use client") will result in an error to protect your SMART_SECURE_CLIENT_ID.
License
MIT
