Frameworks
Next.js 16 — Intégration Scell.io
Server Actions + @scell/sdk côté serveur uniquement
Le SDK `@scell/sdk` v3.5.0 s'utilise dans Next.js 16 via les Server Actions ('use server') ou les Route Handlers (`/app/api/*/route.ts`). Important : NE JAMAIS exposer la clé `sk_*` côté client (pas de `NEXT_PUBLIC_`). Pour widgets côté client, utiliser uniquement la `pk_*` (publishable key). Compatible avec Cache Components et Turbopack.
À retenir
- Server Actions avec `'use server'` directive
- JAMAIS de `NEXT_PUBLIC_SCELL_API_KEY` (secret leak)
- Route Handlers : `/app/api/invoices/route.ts`
- Import `'server-only'` pour bloquer côté client
- Compatible Next.js 16, App Router, Cache Components
Exemple de code
// app/actions/create-invoice.ts
'use server';
import 'server-only';
import { ScellClient } from '@scell/sdk';
import { revalidatePath } from 'next/cache';
const scell = new ScellClient({ apiKey: process.env.SCELL_API_KEY! });
export async function createInvoiceAction(formData: FormData) {
const invoice = await scell.invoices.create({
format: 'factur-x',
buyer: { name: formData.get('buyer') as string, is_individual: true },
lines: [{ description: 'Service', quantity: 1, unit_price: Number(formData.get('amount')), vat_rate: 20.0 }],
});
revalidatePath('/invoices');
return { id: invoice.id };
}