Skip to main content
Glama

API de generación de PDF para desarrolladores. Envía facturas, recibos, contratos e informes con valores predeterminados magníficos.

Instalación

# 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

Novedades

Fecha

Cambio

Abr 2026

GET /v1/renders ahora devuelve un cost por renderizado (en unidades monetarias principales) además de un currency: "usd" de nivel superior. Desnormalizado en el momento de la inserción mediante un trigger de Postgres que lee users.plan, por lo que el coste refleja tu plan cuando se realizó el renderizado. Expuesto en el SDK 0.2.3 como RenderSummary.cost / RendersListResult.currency.

Abr 2026

El SDK ahora incluye tipos generados por OpenAPI: import type { paths, components } from "@kamydev/sdk/openapi" para obtener formas de solicitud/respuesta totalmente tipadas derivadas de la especificación en vivo. También se incluye el openapi.json sin procesar.

Abr 2026

Validación de JSON Schema por plantilla en el momento del renderizado mediante Ajv (formatos habilitados). Anteriormente solo se comprobaba required: ahora está activa la aplicación completa de tipo/formato/enum/oneOf.

Abr 2026

options.encrypt: protección con contraseña AES-256 + flags de permisos (impresión, copia, modificación, anotación, relleno de formularios, accesibilidad, ensamblaje).

Abr 2026

La especificación OpenAPI 3.0.3 ahora cubre las 19 rutas /v1/* con esquemas completos de solicitud/respuesta: https://kamy.dev/api/openapi.json

Abr 2026

CLI kamy push <file> + SDK client.pushTemplate() + upsert idempotente PUT /v1/templates. Ejecútalo en cada commit para sincronizar las plantillas desde el repositorio.

Abr 2026

options.validateOnly: true: prueba de ejecución (dry-run) de cualquier renderizado para validar el payload sin consumir cuota.

Abr 2026

`options.pdfA: "1b"

"2b"

"3b"`: etiquetado de archivo PDF/A de mejor esfuerzo mediante sRGB ICC OutputIntent + XMP incrustados.

Abr 2026

options.metadata (diccionario de información) + options.watermark (sello pdf-lib, distinto de theme.watermark).

Abr 2026

options.inlineImages + options.compressImages: endurecimiento de imágenes en el lado del servidor, defensa contra URLs firmadas que caducan.

Detalles completos por versión en CHANGELOG.md.

Arquitectura

Kamy es un monorepo de Turborepo que contiene:

Paquete

Descripción

apps/web

Aplicación Next.js 15: página de inicio, panel de control, API REST

apps/mcp

Cloudflare Worker: servidor MCP para agentes de codificación de IA

apps/docs

Sitio de documentación Nextra

packages/sdk

@kamydev/sdk: SDK de TypeScript publicable

packages/templates

@kamy/templates: HTML/CSS de plantillas PDF + esquemas Zod

packages/ui

@kamy/ui: componentes compartidos de shadcn/Radix UI

packages/shared

@kamy/shared: tipos, utilidades, observabilidad, correo electrónico

packages/tsconfig

@kamy/tsconfig: configuraciones compartidas de TypeScript

Requisitos previos

  • Node.js 22+

  • pnpm 10+

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

  • Wrangler CLI (pnpm add -g wrangler): para el servidor MCP

Desarrollo local

# 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

La aplicación web se ejecuta en https://kamy.dev

Comandos

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

Base de datos

Las migraciones residen en supabase/migrations/. Se aplican en orden por marca de tiempo.

# Reset and reseed local DB
supabase db reset

# Create a new migration
supabase migration new <name>

# Push to remote Supabase project
supabase db push

Despliegue

  • Aplicación web: Desplegada en Vercel al hacer merge a main

  • Servidor MCP: Desplegado en Cloudflare Workers mediante wrangler deploy

  • Base de datos: Alojada en Supabase Cloud

Variables de entorno

Consulta .env.example para ver todas las variables requeridas con sus descripciones.

Stack tecnológico

  • Framework: Next.js 15 (App Router, React Server Components, Turbopack)

  • Lenguaje: TypeScript 5.7+ estricto

  • Base de datos: Supabase (Postgres 16 + Auth + Storage)

  • Estilos: Tailwind CSS v4 (motor Oxide)

  • Pagos: Stripe (API de medidores)

  • Motor PDF: Browserless.io v2

  • Correo electrónico: Resend + React Email

  • Observabilidad: Sentry + PostHog + Axiom

  • Pruebas: Vitest + Playwright + MSW

Plugins abiertos

Este repositorio incluye una distribución de Open Plugins para que los agentes de codificación de IA (Cursor, Claude Code y cualquier otra herramienta compatible con Open-Plugins) puedan instalar Kamy como un único plugin y obtener una canalización de PDF lista para usar.

El plugin agrupa cuatro componentes en la raíz del repositorio:

Ruta

Componente

Propósito

.plugin/plugin.json

Manifiesto

Nombre, versión, metadatos, componentes declarados

skills/kamy/SKILL.md

Habilidad

Enseña al agente cuándo y cómo renderizar PDFs

rules/kamy-sdk.mdc

Regla

Convenciones de codificación para @kamydev/sdk y la API REST

agents/pdf-template-author.md

Sub-agente

Agente especializado en diseño de plantillas (Handlebars + CSS de impresión)

.mcp.json

Servidor MCP

MCP alojado en mcp.kamy.dev que expone herramientas de renderizado

Para instalar el plugin en un agente compatible, apúntalo a este repositorio (https://github.com/rakanalalami/kamy) y sigue el flujo de instalación de plugins del host. El agente leerá el manifiesto y cargará los componentes automáticamente.

Consulta la especificación de Open Plugins para ver el esquema completo.

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