Articles

Engineering guides

Long-form, cited guides for maintainers hardening GitHub Actions workflows and Stripe billing paths.

Green exit sign hanging from a ceiling.

Stripe Cancel-Save Flow in Node: Retain Subscribers

Build a Stripe cancel-save flow in Node with cancellation intent, save offers, period-end cancellation, and reason analytics.

Programmable calculator photographed on a desk.

Stripe MRR and Churn in Node: Subscription Metrics

Compute Stripe MRR, ARR, churn, paid invoice revenue, and refunds from idempotently stored subscription events in Node.

Close-up of a mechanical electricity meter with numbered dials.

Usage-Based Billing with Stripe in Node: Meter Safely

Build usage-based Stripe billing in Node with a durable usage ledger, billing meter events, customer alerts, and invoice timing checks.

Conference room table surrounded by empty chairs.

Stripe Per-Seat Billing in Node: Proration Controls

Build Stripe per-seat subscriptions in Node with durable seat counts, explicit quantity updates, and predictable proration behavior.

Historical invoice document photographed flat on a light background.

Stripe Webhook Idempotency in Node: Stop Double Work

Build idempotent Stripe webhooks in Node by verifying raw bodies, storing event IDs, and separating API idempotency from webhook dedupe.

Corrugated cardboard moving down a conveyor belt.

npm Trusted Publishing: Safer GitHub Actions Releases

How to keep npm publishing workflows tokenless, traceable, and narrow enough to review.

Robotic arm arranged for automated sorting and stacking.

Dependabot GitHub Actions: Safer Bot PR CI Workflows

How to review token, secret, and automation boundaries on Dependabot pull requests.

Code displayed on a computer monitor.

GitHub Actions Script Injection: Safer Shell Steps

How to keep pull request text and other event data from becoming shell code.

Industrial shelving with stacked storage boxes.

GitHub Actions Cache Security: Avoid Poisoned Builds

How to use GitHub Actions caches without turning dependency restores into a hidden supply-chain trust path.

Rows of high-performance computing racks in a data center.

Artifact Attestations: Verify GitHub Actions Builds

How to add GitHub Actions artifact attestations without turning release provenance into unchecked paperwork.

Rows of data center equipment and cabling.

Self-Hosted Runners: Secure GitHub Actions CI Builds

How to review self-hosted runner exposure before CI jobs can reach local machines, private networks, or long-lived credentials.

Industrial conveyor system inside a factory.

Reusable Workflows: Secure GitHub Actions Pipelines

How to review reusable workflow calls before shared automation spreads CI/CD risk across repositories.

Clouds above the north Atlantic Ocean photographed from orbit.

OIDC Trust Policies: Secure GitHub Actions Cloud Deploys

How to keep GitHub Actions OIDC cloud trust policies narrow enough for production deployments.

Assorted padlocks attached to a chain link fence.

Pin GitHub Actions to SHAs: Secure CI/CD Pipelines

How to make third-party GitHub Actions dependencies immutable, reviewable, and easier to enforce.

A transparent padlock photographed open with a key inserted.

GITHUB_TOKEN Permissions: Safer GitHub Actions CI/CD

How to make GitHub Actions token permissions explicit, narrow, and easier to audit.

A transparent padlock photographed closed.

GitHub pull_request_target Security: Safe PR Workflows

When pull_request_target is useful, when it is risky, and how to split trusted automation from untrusted pull-request code.

Server racks in a computing facility.

GitHub Actions Security: 5 CI Risks to Fix Right Now

Five workflow checks to prioritize before release automation expands risk.