TODO

  • Replace "⏭️ Issue #44 already sent today, skipping" check with "already sent at {last_modified_at}"

What this val does

See Beeminder's blog post on rolodex goals for more context!

This val helps you automate that.

  • Tracks issues or pull‑requests updated in a chosen GitHub repository since the last run.

  • Sends a datapoint to a Beeminder goal.

  • Runs on a Val Town schedule---no servers, no cron on your laptop.

It relies on two helper vals:

ValPurpose
github-apiWrapper around GitHub's REST API with a helper for updated issues.
beeminder-clientLightweight Beeminder v1 API client for goal and datapoint operations.

Prerequisites

  1. Val Town account with Cron permissions.

  2. GitHub Personal Access Token (repo:read scope).

  3. GitHub Repository Owner and Repository Name (as separate environment variables).

  4. Beeminder API Token (under Account → Settings on beeminder.com).

  5. An existing Beeminder goal to receive datapoints.


Setup

  1. Copy this val into your own namespace (press Copy in Val Town).

  2. Configure

Set environment variables:

KeyExample value
GITHUB_TOKENghp_xxx

Configure val (see config.ts or use environment variables):

KeyExample value
GITHUB_REPO_OWNERocto-org
GITHUB_REPO_NAMEmonorepo
BEEMINDER_USERNAMEalice
BEEMINDER_TOKENabcd1234efgh
BEEMINDER_GOALissues

You can either set these as environment variables, or manage them in config.ts.

  1. Schedule it: Schedule a val.town CRON trigger.

How it works

  1. Calls github-api to fetch issues/PRs updated since the last run (it handles tracking the last execution time internally).
  2. For each updated issue/PR, crafts a summary comment and sends a +1 datapoint to your Beeminder goal, with the correct (seconds) timestamp.