sayren

상점에 필요한 기능은
앱으로 더합니다.

앱은 주문 이벤트를 받아 일하고, 상점 플랫폼 안에 화면을 띄웁니다. 개발자가 코드를 올리면 sayren이 실행하고, 셀러는 동의 화면을 보고 설치합니다.

작은 브랜드에서 두 사람이 주문 상품을 상자에 포장하는 모습
  • 주문 메일 알림결제된 주문을 메일로 알립니다.공식 예제 앱
  • 메시지 알림발송·배송 완료를 구매자 메시지로만들 수 있는 앱
  • 물류 연동결제된 주문을 창고 시스템으로만들 수 있는 앱
  • 회계 연동결제·환불을 장부로만들 수 있는 앱
  • 직접 만든 앱
앱이 하는 일

앱이 하는 일은 여섯 가지입니다.

  • 이벤트 받기

    결제 완료, 발송, 반품 요청 같은 상점 이벤트에 맞춰 실행됩니다.

  • 상점 플랫폼 화면

    셀러가 쓰는 상점 플랫폼 안에 앱 화면을 띄웁니다.

  • AI 에이전트 도구

    AI 에이전트가 대화 중에 앱의 기능을 부릅니다.

  • 주문 흐름 연결

    흐름 단계의 알림을 받고, 처리 결과를 흐름에 돌려보냅니다.

  • 예약 작업

    정해진 주기마다 실행됩니다.

  • 외부 알림 받기

    외부 서비스가 앱의 공개 주소로 보낸 요청을 받습니다.

셀러

설치하기 전에 앱이 하는 일을 봅니다.

동의 화면에 앱이 읽는 데이터, 받는 이벤트, 연결하는 외부 주소가 나옵니다. 앱은 여기에 적힌 곳 밖으로 요청을 보낼 수 없습니다.

주문 메일 알림이 앱이 상점에 접근하려고 합니다
읽는 데이터
주문 조회
받는 이벤트
결제 완료
외부 연결
api.resend.com
설정
받는 주소 · 보내는 주소
개발자

서버 없이 앱을 배포합니다.

TypeScript로 함수를 쓰고 올리면 sayren이 빌드하고 실행합니다. 이미 운영하는 서버가 있으면 그 서버에서 실행해도 됩니다.

  1. 앱 폴더를 만들고 매니페스트에 권한·이벤트를 적습니다.
  2. 코드를 올리면 검사 뒤 버전이 만들어집니다.
  3. 버전을 release하면 설치한 상점에 적용됩니다.
src/server.ts
import { defineApp } from "@sayren/app";

export default defineApp({
  events: {
    "ORDER.PAID": async (event, ctx) => {
      const order = await ctx.api.orders.get(event.data.orderId);
      await sendMail(ctx.settings.to, order);
    },
  },
});
npx sayren app init order-mailnpx sayren app deploynpx sayren app release 1
공개 범위

내 상점용으로 만들고, 모든 상점에 공개합니다.

  1. 개발 중 앱

    내가 관리하는 상점과 개발 상점에만 설치합니다.

  2. 비공개 앱

    한 상점 전용으로 만듭니다.

  3. 퍼블릭 앱

    심사를 거쳐 모든 상점의 앱 목록에 나타납니다.

자주 묻는 질문

앱을 실행할 서버가 필요한가요?

필요하지 않습니다. 코드를 올리면 sayren이 실행합니다. 원하면 내 서버에서 실행하고 sayren의 호출을 서명으로 확인할 수 있습니다.

앱이 상점 데이터를 마음대로 가져갈 수 있나요?

없습니다. 앱은 셀러가 동의한 권한 안에서만 데이터를 읽고, 매니페스트에 적은 외부 주소로만 요청을 보냅니다.

앱을 업데이트하면 다시 동의해야 하나요?

권한·외부 주소·이벤트·앱 화면이 늘어나는 변경만 셀러의 재동의를 받습니다. 재동의 전까지는 이전 버전으로 계속 동작합니다.

예제 코드가 있나요?

결제된 주문을 메일로 알리는 앱의 전체 코드를 공개 저장소에 둡니다. 가이드가 처음부터 설치까지 따라갑니다.

첫 앱을
만들어 보십시오.