Choisir un adapter
Où vivent vos feedbacks — Prisma ou Drizzle pour la production, memory pour les tests et démos, localStorage pour le tout-client.
Un adapter, c'est la couche de stockage derrière SitePing. Les quatre implémentent le même contrat SitepingStore (6 méthodes), vous pouvez donc les échanger sans toucher au widget.
| Adapter | Où vivent les données | À utiliser pour |
|---|---|---|
@siteping/adapter-prisma | Votre base de données, via Prisma | La production — l'installation standard |
@siteping/adapter-drizzle | PostgreSQL ou Turso / libSQL, via Drizzle ORM | La production dans un projet Drizzle — tables dans votre schéma, drivers serverless comme Neon HTTP |
@siteping/adapter-memory | Un tableau en mémoire du processus | Tests, previews, démos jetables |
@siteping/adapter-localstorage | Le navigateur du visiteur | Démos et prototypes côté client — aucun serveur |
Besoin d'un autre backend ? Écrivez le vôtre avec @siteping/adapter-kit.
Les captures restent en ligne dans le feedback tant que le store Prisma ou Drizzle n'a pas de screenshotStorage : @siteping/screenshot-storage les envoie vers Cloudflare R2, AWS S3, Cloudflare Images, votre base de données ou votre disque.
Deux façons de monter un store
Mode serveur — le widget parle à un endpoint HTTP, et l'endpoint parle au store. C'est la forme de production :
// app/api/siteping/route.ts
import { createSitepingHandler } from "@siteping/adapter-prisma";
import { prisma } from "@/lib/prisma";
export const { GET, POST, PATCH, DELETE, OPTIONS } = createSitepingHandler({ prisma });Tout autre store se monte de la même façon avec @siteping/server : createSitepingHandler({ store }).
Mode côté client — le widget écrit directement dans un store du navigateur, aucun serveur nécessaire :
import { initSiteping } from "@siteping/widget";
import { LocalStorageStore } from "@siteping/adapter-localstorage";
initSiteping({ store: new LocalStorageStore(), projectName: "ma-demo" });Vous écrivez votre propre adapter ? Installez
@siteping/adapter-kit: les backends snapshot obtiennent un store complet viacreateCollectionStore, les backends à requêtes implémentent les 6 méthodes, et les deux se vérifient avec la suite de conformité partagée (67 tests). Voir Écrire un adapter.