What is Membrane?
FEATURES
- Built inside VS Code ............. 0
- Cron Jobs and Timers ........... 1
- Durable Programs ................. 2
- The Graph ...................... 3
- Graph-based Access Control ....... 4
- Observability .................. 5
- Instantanous Deploys ............. 6
- Step Debugger .................. 7
- Custom Exit Nodes ................ 8
- Open Source Drivers (APIs) ....... 9
- Code completion ............... 10
EXAMPLES
- SMS Reminders .................. 9
- Discord Weather Bot ............. 10
- Mailchimp Alerts ................ 11
- ☞Follow Hacker News Users ........ 12
- Airtable changes to Email ....... 13
- Twitter Bot ..................... 14
- HTMX Form ..................... 15
- Github Weekly Report ............ 16
- Github Action Alert ............. 17
- Github Commits on Discord ....... 18
- Track HN Jobs in Google Sheets .. 19
- Mailchimp to airtable ........... 20
example-hn-follow
Set up a "cron-job" timer that invokes
check
periodically.Store "last seen" in
state
for persistence.Send yourself an text message
import { nodes, root, state } from "membrane";
const { hn, sms } = nodes;
export function setup() {
root.check.$cron("30 35 * * * *");
}
export async function follow({ username }) {
const { id, submitted } = await hn.users
.one({ id: username })
.$query(`{ id submitted { items { id } } }`);
const lastSeen = submitted?.items?.[0]?.id ?? 0;
state[username] = { id, lastSeen };
}
export async function check() {
for (const [username, { lastSeen }] of Object.entries(state)) {
const items = await hn.users
.one({ id: username })
.submitted.items.$query(`{ id }`);
const latest = (items ?? [])[0];
if (latest?.id! > (lastSeen as number)) {
const url = `https://news.ycombinator.com/item?id=${latest.id}`;
await sms.send({ message: `New HN post from ${username}: ${url}` })
state[username] = latest.id!;
}
}
}
Dev Blog
- 2023.08.20 Progress Update #3 Simpler function signatures, built-in Google auth.
- 2023.08.13 Progress Update #2 Windows support and OOM handling.
- 2023.07.30 Progress Update #1 Internal logging architecture, improved HTTP UI.
- 2023.07.14 Progress Update #0 Exit nodes and Program Replays.