어댑터 선택하기
피드백이 저장되는 위치 — 프로덕션에는 Prisma나 SQLite, 테스트와 데모에는 memory, 클라이언트 전용 구성에는 localStorage.
어댑터는 InstaFix 뒤에서 동작하는 저장 계층입니다. 모두 동일한 InstaFixStore 계약(메서드 6개)을 구현하므로, 위젯을 건드리지 않고도 서로 교체할 수 있습니다.
| 어댑터 | 데이터 저장 위치 | 사용 대상 |
|---|---|---|
@instafix/adapter-prisma | Prisma를 통한 여러분의 데이터베이스 | 프로덕션 — 이미 Prisma를 쓰고 있다면 |
@instafix/adapter-sqlite | better-sqlite3를 통한 로컬 .db 파일 | 프로덕션 — ORM도 별도 DB 서버도 필요 없을 때 |
@instafix/adapter-memory | 프로세스 내 배열 | 테스트, 프리뷰, 일회성 데모 |
@instafix/adapter-localstorage | 방문자의 브라우저 | 서버가 전혀 없는 클라이언트 사이드 데모와 프로토타입 |
어느 쪽을 골라야 할지 모르겠다면 — 프로젝트에 이미 Prisma가 세팅되어 있다면 그대로 쓰고, 아니면 SQLite가 별도 설치나 실행 없이 실질적인 영구 저장소를 제공합니다. npx github:gnoopy/instafix#cli-dist init을 실행하면 물어보고 선택한 대로 연결해 줍니다.
완전히 다른 백엔드가 필요하신가요(Prisma 없는 Postgres, MongoDB, DynamoDB 등)? @instafix/adapter-kit으로 직접 작성하세요.
스토어를 붙이는 두 가지 방법
서버 모드 — 위젯이 HTTP 엔드포인트와 통신하고, 엔드포인트가 스토어와 통신합니다. 프로덕션에서 사용하는 구성입니다:
// app/api/instafix/route.ts
import { createInstaFixHandler } from "@instafix/adapter-prisma";
import { prisma } from "@/lib/prisma";
export const { GET, POST, PATCH, DELETE, OPTIONS } = createInstaFixHandler({ prisma });클라이언트 사이드 모드 — 위젯이 브라우저 안에서 스토어에 직접 쓰기 때문에 서버가 필요 없습니다:
import { initInstaFix } from "@instafix/widget";
import { LocalStorageStore } from "@instafix/adapter-localstorage";
initInstaFix({ store: new LocalStorageStore(), projectName: "my-demo" });직접 어댑터를 작성하고 싶으신가요?
@instafix/adapter-kit을 설치하세요: 스냅샷 기반 백엔드는createCollectionStore로 완전한 스토어를 얻을 수 있고, 쿼리 기반 백엔드는 6개의 메서드를 직접 구현하며, 두 방식 모두 공유 conformance 스위트(테스트 44개)로 검증할 수 있습니다. 어댑터 작성하기를 참고하세요.