MEMBRANE
alpha
What is Membrane?
A fast, powerful way to write internal tools in TypeScript, connecting the apps you already use at work.
FEATURESEXAMPLES
example weekly report
Example of a Membrane program to generate a weekly report on issues, pull requests, and commits in a GitHub organization
Set up a cron-job that generates report every Friday.
New Google Doc
Find Issues & Pull Requests
Append Issue & PR Details
Search & Select Commits
Append details of commits
import { root, nodes, state } from "membrane";
export async function configure({ org }) {
state.org = org;
root.report.$cron(`0 0 17 ? * FRI`);
}
export async function report() {
const [weekAgo, now] = getDateRangeString();
const { org } = state;
const doc = await nodes.gdocs.documents.create({
title: `Last Week Report - ${now}`,
});
await doc.insertText({
text: `Weekly Report (${weekAgo} to ${now})`,
});
const issuesAndPr = await nodes.github.search
.issues({ q: `org:${org}+created:${weekAgo}..${now}` })
.$query(`{ items { html_url title created_at user {login}}}`);
await doc.insertText({ text: `Issues and Pull Requests:` });
for (let event of issuesAndPr.items!) {
await doc.insertText({
text: `${event.user!.login}: ${event.created_at!}`
});
await doc.insertLink({
text: `${event.title}`, url: event.html_url
});
}
const commits = await nodes.github.search
.commits({ q: `org:${org}+committer-date:${weekAgo}..${now}` })
.$query(`{ items { sha html_url message date author {login}}}`);
await doc.insertText({ text: `Commits Summary:` });
for (let event of commits.items!) {
await doc.insertBullet({
text: `${event.author!.login}: ${event.date!} - ` });
await doc.insertLink({
text: `${event.message!.replace(/g, "")}`,
url: event.html_url
});
}
const url = await doc.url;
console.log(`Report generated at ${url}`);
}
What is Membrane?
A fast, powerful way to write internal tools in TypeScript, connecting the apps you already use at work.
FEATURESEXAMPLES
Communication
If you're curious about Membrane's architecture, Juan joined the devtools.fm podcast to talk through the nuts and bolts.
- 2024-12-20 Automating changelogs Automating Membrane changelogs with Membrane
- 2024-12-13 Changelog 0.14 Custom IDE theme; collapse all types
- 2024-12-11 Stripe subscription webhooks A program to handle Stripe webhooks
- 2024-12-10 Slack signup alerts A program to send signup alerts on Slack
- 2024-12-06 Changelog 0.13 Program REPL, simplified IDE
- 2024-11-22 Changelog 0.12 Renaming & deleting programs; faster TS diagnostics
- 2024-11-15 Changelog 0.11 IDE layout updates; search & explore packages by user
- 2024-11-08 Changelog 0.10 Saving editor settings; HTTP endpoint previews
- 2024-11-01 Changelog 0.9 Program cloning; embedded docs in IDE
- 2024-10-25 Changelog 0.8 Package publishing; Navigator action logs
- 2024-10-18 Changelog 0.7 Simpler onboarding, new templates; better types
- 2024-10-04 Changelog 0.6 IDE text selection; GitHub, Anthropic driver upgrades
- 2024-09-27 Changelog 0.5 Better npm support; package sharing upgrades
- 2024-09-13 Changelog 0.4 Navigator file explorer; share page improvements
- 2024-09-06 Changelog 0.3 Support npm package types; Logs back navigation
- 2024-08-30 Changelog 0.2 Logs UI upgrades and better onboarding UX (examples)
- 2024-08-23 Changelog 0.1 Improved Navigator context menu and driver install UX
- 2024-06-19 Public Roadmap A Membrane program to share what we're working on
- 2023-09-20 Progress Update #3 Simpler function signatures; built-in Google auth
- 2023-09-13 Progress Update #2 Windows support and OOM handling
- 2023-08-30 Progress Update #1 Internal logging architecture; improved HTTP UI
- 2023-08-14 Progress Update #0 Exit nodes and Program Replays
Enter your email for occasional updates