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" を返すようになりました。Postgresトリガーが users.plan を読み取ることで挿入時に非正規化されるため、コストにはレンダリング実行時のプランが反映されます。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 — クォータを消費せずにペイロードを検証するためのドライラン。

2026年4月

`options.pdfA: "1b"

"2b"

"3b"` — 埋め込みsRGB ICC OutputIntent + XMPによるベストエフォート型のPDF/Aアーカイブタグ付け。

2026年4月

options.metadata (info dict) + 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

Webアプリは 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

デプロイ

  • Webアプリ: 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