Get Started

What is Membrane?

Stateful serverless TypeScript for internal tools.

FEATURES
EXAMPLES
example mailchimp to airtable
Adds a new record to an Airtable Base when a new Mailchimp subscriber is added.
Subscribe to event.
GraphQL query
New Airtable record.
import { nodes, root, state } from "membrane";

export async function configure({ audienceId, tableId }) {
  const audience = await nodes.audiences.one({ id: audienceId });
  await audience.subscriptions.$subscribe(root.handleEvent);

  state.table = nodes.tables.one({ id: tableId });
}

export async function handleEvent(_, { event }) {
  const data = await event.member.$query(
    `{ email_address, status, timestamp_opt }`
  );

  const record = {
    email: data.email_address,
    status: data.status,
    timestamp: data.timestamp_opt,
  };
  await state.table.createRecord({ fields: record });
}

What is Membrane?

Stateful serverless TypeScript for internal tools.

FEATURES
EXAMPLES
Adds a new record to an Airtable Base when a new Mailchimp subscriber is added.
Subscribe to event.
GraphQL query
New Airtable record.
import { nodes, root, state } from "membrane";

export async function configure({ audienceId, tableId }) {
  const audience = await nodes.audiences.one({ id: audienceId });
  await audience.subscriptions.$subscribe(root.handleEvent);

  state.table = nodes.tables.one({ id: tableId });
}

export async function handleEvent(_, { event }) {
  const data = await event.member.$query(
    `{ email_address, status, timestamp_opt }`
  );

  const record = {
    email: data.email_address,
    status: data.status,
    timestamp: data.timestamp_opt,
  };
  await state.table.createRecord({ fields: record });
}
Features Walkthrough
In this video we discuss 3 of the most important features of Membrane: Durability, The Graph, and Observability.
Clickable poster of the Features Walkthrough video
Communication


Enter your email for occasional updates