Pulse

Análisis de crecimiento para desarrolladores de apps: consulta ingresos, MRR, gasto en anuncios, suscripciones, embudos, LTV y CAC desde tu agente de IA. Acceso de solo lectura a tus propios datos de RevenueCat, App Store, Google Play, Meta Ads y Google Ads.

Documentación

SDK de Pulse

SDKs de analítica de código abierto para web, React Native, iOS y Android. Añade analítica a tu aplicación con una cola de eventos fiable, prioritaria para modo offline e identidad limpia — y nada más.

  • Diminuto. El SDK web es ≤ 10 KB comprimido con gzip con cero dependencias.
  • Fiable. Una cola persistente y ordenada sobrevive a periodos offline y a la muerte del proceso. La entrega es idempotente: los reintentos nunca duplican eventos.
  • Honesto con la privacidad. Sin captura automática, sin huellas digitales, sin IDFA/GAID, sin SDKs de anuncios. El SDK envía solo los eventos que tú le envías.
  • Un protocolo, cuatro plataformas. Cada SDK implementa el mismo protocolo de cable y pasa los mismos fixtures de conformidad en CI. El servidor de ingesta de Pulse reproduce esos mismos fixtures — el contrato se verifica desde ambos extremos.

Este repositorio contiene los paquetes de TypeScript. Los SDKs de Swift y Kotlin viven en pulse-sdk-native.

Para agentes de IA

Instala: npm i @pulse-circle/web, luego Pulse.init('pk_...') y Pulse.track('event', {...}). El paquete es autocontenido (cero dependencias, endpoint predeterminado incluido) y trae llms.txt dentro. Instalar solo necesita npm; la entrega de eventos ocurre en el navegador del usuario final en tiempo de ejecución.

Paquetes

PaquetePara qué sirveInstalación
@pulse-circle/webNavegador / cualquier aplicación webnpm i @pulse-circle/web
@pulse-circle/react-nativeReact Native y Exponpm i @pulse-circle/react-native
@pulse-circle/coreMotor independiente de plataforma (usado por los anteriores)npm i @pulse-circle/core
@pulse-circle/mcpServidor MCP local (stdio) — guías de configuración/conexión offline para agentes de IAclaude mcp add pulse -- npx -y @pulse-circle/mcp

Inicio rápido (web)

npm install @pulse-circle/web
import { Pulse } from '@pulse-circle/web';

Pulse.init('pk_your_api_key');

// Track product events — the SDK batches, persists, and retries for you.
Pulse.track('subscription_started', { plan: 'pro' });

// Tie events to a user after login.
Pulse.identify('user_42');

// On logout, start a fresh anonymous identity.
Pulse.reset();

Esa es toda la API. Consulta el README de cada paquete para la instalación específica de la plataforma (etiqueta de script, Expo, etc.) y la referencia completa.

La API, en todas partes

Los cinco métodos son idénticos en las cuatro plataformas, en la sintaxis idiomática de cada lenguaje:

init(apiKey, options?)      // configure once
track(event, properties?)   // queue an event
identify(userId)            // associate the current identity with a user id
reset()                     // logout: new anonymous identity
flush()                     // force-send the queue (tests, critical moments)

Deliberadamente no hay seguimiento automático de pantalla/página ni métodos de ingresos: los ingresos provienen de conectores del lado del servidor, por lo que hay exactamente una fuente de verdad por número.

El contrato de fiabilidad

  • Cada evento recibe un idempotency_key y un timestamp en el momento en que llamas a track — nunca en el momento del envío. Los reintentos reenvían ambos byte-idénticos, y la clave primaria del servidor incluye ambos, por lo que una red inestable nunca puede crear un duplicado.
  • La cola es persistente (localStorage en web, archivos en móvil) y ordenada. Sobrevive a recargas, fallos y periodos offline hasta un límite por plataforma, luego expulsa los más antiguos primero con una advertencia de depuración en lugar de crecer sin límite.
  • Los reintentos usan retroceso exponencial con jitter. Un lote que el servidor sigue rechazando (un lote "venenoso") se aparta después de 10 intentos para que nunca pueda bloquear todo lo que está detrás.

Los detalles normativos están en protocol/PROTOCOL.md.

Desarrollo

npm install
npm test          # conformance fixtures + unit tests (vitest)
npm run lint
npm run typecheck
npm run build     # tsup builds for every package
npm run size -w @pulse-circle/web   # enforce the 10 KB budget

Fixtures de conformidad

protocol/fixtures es la fuente de verdad para el comportamiento multiplataforma. Cada archivo JSON es un escenario ("estas llamadas a la API producen estas solicitudes HTTP"); cada SDK los ejecuta a través de un ejecutor de fixtures compartido, y el servidor los reproduce contra ingesta real. Cambia el comportamiento cambiando un fixture, y el CI de cada plataforma te dice quién está fuera de contrato.

Publicación

Las versiones son independientes por paquete. Aumenta la versión en el package.json del paquete, luego empuja una etiqueta:

core-v0.1.0 | web-v0.1.0 | react-native-v0.1.0

El flujo de trabajo de publicación verifica que la etiqueta coincida con package.json, ejecuta la prueba completa + compilación + control de tamaño, y publica en npm con procedencia.

Licencia

MIT © Pulse Circle Studio