Adaptateurs

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.

AdapterOù vivent les donnéesÀ utiliser pour
@siteping/adapter-prismaVotre base de données, via PrismaLa production — l'installation standard
@siteping/adapter-drizzlePostgreSQL ou Turso / libSQL, via Drizzle ORMLa production dans un projet Drizzle — tables dans votre schéma, drivers serverless comme Neon HTTP
@siteping/adapter-memoryUn tableau en mémoire du processusTests, previews, démos jetables
@siteping/adapter-localstorageLe navigateur du visiteurDé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 via createCollectionStore, 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.

Modifier sur GitHub

Sur cette page