feature index · ten widgets, one backend

every widget your
static site actually needs.

Grouped by what they're for. Community, growth, publishing, site-wide. Drop them in one at a time or all at once — same dashboard, same invoice.

community

Reader participation without handing your traffic to a third-party JS monolith.

Comments

Threaded replies. Moderation queue, approve/reject/delete. Auto-close after N days. No reader signup — they type, they send.

Reactions

Hearts, claps, bookmarks, thumbs. Per-page, anonymous, lightweight. Signal without the noise.

Polls

Multi-choice, anonymous, real-time tallies. CSV export. "Should I write part two?" at the bottom of a post.

Feedback boards

Readers post suggestions, you triage with status tracking (open / planned / shipped). Public or private.

growth

The widgets that turn visitors into a list you actually own.

Email subscriptions

Double opt-in, per-post notifications or weekly digest. One-click unsubscribe. Export the list whenever — you own it.

Waitlist

Pre-launch signups. Referral-friendly. Export to CSV when it's time to open the gates.

Forms

Contact forms, surveys, custom fields. Honeypot + AI spam filter. Submissions land in your dashboard — not your inbox.

publishing

A whole headless CMS underneath the widgets. Write in TipTap, store in Markdown, schedule or publish immediately. Drafts for already-published posts — edit, review, publish the diff. AI-generated excerpts via Bedrock when you can't be bothered.

On publish we trigger your static site's build so the post goes live without you touching CI. Image uploads handled, asset URLs returned. Your repo stays clean.

jamwidgets dashboard · posts
╭─ draft ─────────────────────────────────╮
 title      the case against newsletters
 slug       /case-against-newsletters
 excerpt    (AI-generated, edit if you want)
 scheduled  tues 08:00 pt
 status     draft → queued to publish
╰─────────────────────────────────────────╯

# on publish
 markdown committed → github:tim/blog
 site rebuild triggered (cloudflare pages)
 subscribers notified (142 emails queued)

site-wide

The small things that need to sit across pages instead of inside one.

Announcements

Top-of-page banners, dismissible per-reader. Schedule start/end. Link-in, done.

Page views

Lightweight view tracking per page, per path, per day. Dashboard charts. No cookie banner needed.

Team & roles

Email-invite teammates at Owner / Admin / Editor / Viewer. Editors write posts, admins moderate, owners own billing.

coming soon in progress

Social queue. Connect a Bluesky or Mastodon account, queue or schedule posts from the same dashboard you write in. Auto-post on publish, or draft a thread and send it later.

Behind the flag today while we get the auth plumbing right. If you want early access, say hi.

works with whatever you ship

Packages for the frameworks we use ourselves — and plain HTML embed for everything else.

Hugo, Jekyll, Eleventy, plain HTML, a WordPress theme — drop the <script> tag, add the data-* attributes. Works anywhere that renders HTML.

ready when you are.

Free for personal sites. Paid plans at $9 and $29. Or get jamwidgets Team free with any cmdline Team subscription.