Skip to main content
Glama

API для генерации PDF для разработчиков. Создавайте счета, квитанции, контракты и отчеты с великолепными настройками по умолчанию.

Установка

# 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

GET /v1/renders теперь возвращает cost за рендер (в основных денежных единицах) плюс верхнеуровневый currency: "usd". Денормализовано во время вставки через триггер Postgres, считывающий users.plan, поэтому стоимость отражает ваш тарифный план на момент рендеринга. Доступно в SDK 0.2.3 как RenderSummary.cost / RendersListResult.currency.

Апр 2026

SDK теперь поставляется с типами, сгенерированными OpenAPI — import type { paths, components } from "@kamydev/sdk/openapi" для полностью типизированных структур запросов/ответов, полученных из актуальной спецификации. Также поставляется необработанный openapi.json.

Апр 2026

Валидация JSON Schema для каждого шаблона во время рендеринга через Ajv (форматы включены). Ранее проверялось только поле required — теперь реализовано полное принудительное соблюдение типов/форматов/enum/oneOf.

Апр 2026

options.encrypt — защита паролем AES-256 + флаги разрешений (печать, копирование, изменение, аннотирование, заполнение форм, доступность, сборка).

Апр 2026

Спецификация OpenAPI 3.0.3 теперь охватывает все 19 маршрутов /v1/* с полными схемами запросов/ответов — https://kamy.dev/api/openapi.json

Апр 2026

CLI kamy push <file> + SDK client.pushTemplate() + идемпотентный апсерт PUT /v1/templates. Запускайте при каждом коммите для синхронизации шаблонов из репозитория.

Апр 2026

options.validateOnly: true — пробный запуск любого рендера для проверки полезной нагрузки без расходования квоты.

Апр 2026

`options.pdfA: "1b"

"2b"

"3b"` — архивная маркировка PDF/A с максимальными усилиями через встроенный sRGB ICC OutputIntent + XMP.

Апр 2026

options.metadata (словарь info) + options.watermark (штамп pdf-lib, отличается от theme.watermark).

Апр 2026

options.inlineImages + options.compressImages — серверная обработка изображений, защита от истечения срока действия подписанных URL.

Полная информация по каждому релизу в CHANGELOG.md.

Архитектура

Kamy — это монорепозиторий Turborepo, содержащий:

Пакет

Описание

apps/web

Приложение Next.js 15 — лендинг, панель управления, REST API

apps/mcp

Cloudflare Worker — MCP-сервер для ИИ-агентов программирования

apps/docs

Сайт документации Nextra

packages/sdk

@kamydev/sdk — публикуемый TypeScript SDK

packages/templates

@kamy/templates — HTML/CSS шаблоны PDF + схемы 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

Развертывание

  • Веб-приложение: Развертывается в Vercel при слиянии с веткой main

  • MCP-сервер: Развертывается в Cloudflare Workers через wrangler deploy

  • База данных: Размещается в Supabase Cloud

Переменные окружения

См. .env.example для получения всех необходимых переменных с описаниями.

Технологический стек

  • Фреймворк: Next.js 15 (App Router, React Server Components, Turbopack)

  • Язык: TypeScript 5.7+ (строгий режим)

  • База данных: 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, чтобы ИИ-агенты программирования (Cursor, Claude Code и любой другой инструмент, совместимый с Open-Plugins) могли установить Kamy как единый плагин и получить готовый к использованию конвейер PDF.

Плагин объединяет четыре компонента в корне репозитория:

Путь

Компонент

Назначение

.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 на mcp.kamy.dev, предоставляющий инструменты рендеринга

Чтобы установить плагин в поддерживаемом агенте, укажите этот репозиторий (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