Batteries included.
One contract, 40+ plugins.

The stack a real SaaS needs — billing, storage, mail, notifications, search, analytics, rate-limiting — shipped as first-party plugins over a single contract. Each can intercept handlers, extend the schema, add routes or run lifecycle hooks. Install only what you need; they compose.

plugins.ts
TypeScript
// definePlugin — one contract for every extension
import { definePlugin } from '@voltro/protocol'

export const billing = () => definePlugin({
  name: 'billing',
  extendSchema:      { tables: [subscriptions, plans] },
  interceptMutation: guardEntitlements,
  routes:            [checkoutRoute],
})

// install only what you need — they compose
plugins: [billing(), storage(), mail(), notifications()]

The ecosystem, by job.

One plugin contract

definePlugin lets a plugin intercept mutations / queries / actions, extend the schema (tables + migrations or a mixin), provide Effect service layers, register routes and inspect endpoints, and run install / activate lifecycle hooks. Order is explicit; plugins compose outer→inner.

Commerce & billing

plugin-billing models subscriptions, plans, entitlements and usage metering over a provider (Stripe + mock) with seats, proration, dunning and a requireEntitlement() guard. plugin-licensing verifies offline EdDSA license keys.

Storage, mail & notifications

plugin-storage (S3 / R2 / GCS / Azure / filesystem) with presigned URLs and image transforms; plugin-mail (Resend / Postmark / SES / SMTP) with React-Email templates; plugin-notifications across email / Slack / SMS / push / in-app.

Data & schema mixins

audit(), softDelete(), deactivation(), versioning (row history + time-travel), governance (retention, GDPR export/erasure, field encryption) and multitenancy — cross-cutting concerns as composable mixins.

Search, analytics & webhooks

plugin-search syncs to Typesense / Meilisearch / Algolia; five analytics sinks (Postgres, DuckDB, ClickHouse, Tinybird, PostHog) behind one ctx.analytics; plugin-webhooks does durable outgoing + verified incoming (Stripe / GitHub / Slack presets).

Control & operations

plugin-ratelimit (fixed / sliding / token-bucket), plugin-flags (targeting + % rollout + kill-switch), plugin-moderation, plugin-rbac, plugin-openapi, and the observability exporters (Prometheus, Datadog, Sentry, log-ship).

Add only what you need.

Composable, not a monolith

A Voltro app installs the plugins it uses and nothing else — each is a package over the same contract, so they share the runtime, the change-feed and the migration planner. A few plugins are still filling out: plugin-cdc-out ships its engine plus memory and webhook sinks, but the Kafka / Snowflake / BigQuery connectors are interface stubs you implement, not turnkey.

Plugins compose with the core.

Open the framework. See it for yourself.

Every primitive on this page is in the framework today. Clone the starter, run `voltro dev`, and have it on screen in two minutes.