Skip to main content
Glama

개발자를 위한 PDF 생성 API. 멋진 기본값으로 송장, 영수증, 계약서 및 보고서를 배포하세요.

설치

# SDK — in your app
npm i @kamydev/sdk

# CLI — globally for scripts, CI, previews
npm i -g @kamydev/cli
import Kamy from "@kamydev/sdk";

const kamy = new Kamy({ apiKey: process.env.KAMY_API_KEY! });
const pdf = await kamy.render({
  template: "invoice",
  data: { invoiceNumber: "INV-001", total: 1500, currency: "USD" },
});
console.log(pdf.url); // signed URL, valid 1 hour

새로운 기능

날짜

변경 사항

2026년 4월

GET /v1/renders가 이제 렌더링당 비용(cost)(주요 통화 단위)과 최상위 currency: "usd"를 반환합니다. users.plan을 읽는 Postgres 트리거를 통해 삽입 시점에 비정규화되므로, 비용은 렌더링 당시의 플랜을 반영합니다. SDK 0.2.3에서 RenderSummary.cost / RendersListResult.currency로 노출됩니다.

2026년 4월

SDK가 이제 OpenAPI 생성 타입을 제공합니다. 라이브 사양에서 파생된 완벽한 타입의 요청/응답 형태를 위해 import type { paths, components } from "@kamydev/sdk/openapi"를 사용하세요. 원본 openapi.json도 함께 제공됩니다.

2026년 4월

Ajv를 통한 렌더링 시점의 템플릿별 JSON 스키마 검증(포맷 활성화). 이전에는 required만 확인했으나, 이제 전체 타입/포맷/enum/oneOf 강제 적용이 활성화되었습니다.

2026년 4월

options.encrypt — AES-256 암호 보호 + 권한 플래그(인쇄, 복사, 수정, 주석 달기, 양식 채우기, 접근성, 어셈블리).

2026년 4월

OpenAPI 3.0.3 사양이 이제 19개의 모든 /v1/* 경로를 전체 요청/응답 스키마와 함께 다룹니다 — https://kamy.dev/api/openapi.json

2026년 4월

kamy push <file> CLI + client.pushTemplate() SDK + 멱등성 있는 PUT /v1/templates 업서트. 리포지토리에서 템플릿을 동기화하려면 모든 커밋 시 실행하세요.

2026년 4월

options.validateOnly: true — 할당량을 소모하지 않고 페이로드를 검증하기 위한 드라이 런(dry-run) 렌더링.

2026년 4월

`options.pdfA: "1b"

"2b"

"3b"` — 임베디드 sRGB ICC OutputIntent + XMP를 통한 최선의 PDF/A 아카이브 태깅.

2026년 4월

options.metadata (정보 사전) + options.watermark (pdf-lib 스탬프, theme.watermark와 별개).

2026년 4월

options.inlineImages + options.compressImages — 서버 측 이미지 강화, 만료되는 서명된 URL에 대한 방어.

전체 릴리스별 세부 정보는 CHANGELOG.md에서 확인하세요.

아키텍처

Kamy는 다음을 포함하는 Turborepo 모노레포입니다:

패키지

설명

apps/web

Next.js 15 앱 — 랜딩 페이지, 대시보드, REST API

apps/mcp

Cloudflare Worker — AI 코딩 에이전트를 위한 MCP 서버

apps/docs

Nextra 문서 사이트

packages/sdk

@kamydev/sdk — 배포 가능한 TypeScript SDK

packages/templates

@kamy/templates — PDF 템플릿 HTML/CSS + Zod 스키마

packages/ui

@kamy/ui — 공유 shadcn/Radix UI 컴포넌트

packages/shared

@kamy/shared — 타입, 유틸리티, 관측 가능성, 이메일

packages/tsconfig

@kamy/tsconfig — 공유 TypeScript 설정

사전 요구 사항

  • Node.js 22+

  • pnpm 10+

  • Supabase CLI (brew install supabase/tap/supabase)

  • Wrangler CLI (pnpm add -g wrangler) — MCP 서버용

로컬 개발

# 1. Install dependencies
pnpm install

# 2. Copy env file and fill in values
cp .env.example apps/web/.env.local

# 3. Start local Supabase (requires Docker)
supabase start

# 4. Apply database migrations
supabase db reset

# 5. Generate TypeScript types from schema
supabase gen types typescript --local > packages/shared/src/types/database.ts

# 6. Start all apps in dev mode
pnpm dev

웹 앱은 https://kamy.dev에서 실행됩니다.

명령어

pnpm dev          # Start all apps with Turbopack (hot reload)
pnpm build        # Production build all apps
pnpm typecheck    # TypeScript check across all packages
pnpm lint         # Biome lint + format check
pnpm lint:fix     # Biome auto-fix
pnpm test         # Run all tests (Vitest unit + Playwright E2E)
pnpm test:unit    # Vitest unit tests only
pnpm test:e2e     # Playwright E2E tests only
pnpm clean        # Remove all build artifacts

데이터베이스

마이그레이션은 supabase/migrations/에 있습니다. 타임스탬프 순서대로 적용됩니다.

# Reset and reseed local DB
supabase db reset

# Create a new migration
supabase migration new <name>

# Push to remote Supabase project
supabase db push

배포

  • 웹 앱: main 브랜치 병합 시 Vercel에 배포

  • MCP 서버: wrangler deploy를 통해 Cloudflare Workers에 배포

  • 데이터베이스: Supabase Cloud에서 호스팅

환경 변수

설명이 포함된 모든 필수 변수는 .env.example을 참조하세요.

기술 스택

  • 프레임워크: Next.js 15 (App Router, React Server Components, Turbopack)

  • 언어: TypeScript 5.7+ strict

  • 데이터베이스: Supabase (Postgres 16 + Auth + Storage)

  • 스타일링: Tailwind CSS v4 (Oxide 엔진)

  • 결제: Stripe (Meters API)

  • PDF 엔진: Browserless.io v2

  • 이메일: Resend + React Email

  • 관측 가능성: Sentry + PostHog + Axiom

  • 테스트: Vitest + Playwright + MSW

오픈 플러그인

이 리포지토리는 Open Plugins 배포판을 제공하므로 AI 코딩 에이전트(Cursor, Claude Code 및 기타 Open-Plugins 호환 도구)가 Kamy를 단일 플러그인으로 설치하고 즉시 사용 가능한 PDF 파이프라인을 얻을 수 있습니다.

이 플러그인은 리포지토리 루트에 4개의 컴포넌트를 번들로 제공합니다:

경로

컴포넌트

목적

.plugin/plugin.json

매니페스트

이름, 버전, 메타데이터, 선언된 컴포넌트

skills/kamy/SKILL.md

스킬

에이전트에게 PDF 렌더링 시기와 방법 교육

rules/kamy-sdk.mdc

규칙

@kamydev/sdk 및 REST API에 대한 코딩 컨벤션

agents/pdf-template-author.md

서브 에이전트

전문 템플릿 디자인 에이전트 (Handlebars + print CSS)

.mcp.json

MCP 서버

렌더링 도구를 노출하는 mcp.kamy.dev의 호스팅된 MCP

지원되는 에이전트에 플러그인을 설치하려면 이 리포지토리(https://github.com/rakanalalami/kamy)를 가리키고 호스트의 플러그인 설치 흐름을 따르세요. 에이전트가 매니페스트를 읽고 컴포넌트를 자동으로 로드합니다.

전체 스키마는 Open Plugins 사양을 참조하세요.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables creative PDF generation with full design control including colors, shapes, emoji, and Unicode support. Supports everything from simple documents to artistic masterpieces using PDFKit's powerful API.
    5
    1,421 npm
    2
    MIT