Publish product updates as a changelog page, a feed and a What's new bell
Write a release note in Markdown, schedule it, and it appears on a public page, in an Atom and a JSON feed, and in a small bell you drop into your app with one script tag. It runs on your own server with the data in one file, so there are no tiers, no seat fees and no entry caps. Read the source or deploy it below.
Try the writer sample data
This runs the same Markdown renderer the server uses, in your browser. Nothing you type is uploaded and the page makes no network requests.
Why use this instead of what you do today
| Today | Catch | Changelog Keeper |
|---|---|---|
| Headway, Beamer, LaunchNotes, Canny changelog and similar | Monthly fees that climb with tracked users or seats; your release history lives with them | Unlimited entries and readers, one JSON file you own, no fee |
| A Notion or GitHub Releases page | No in-app widget, no unread badge, no scheduling | Bell with unread count, scheduled posts, drafts |
| Nothing (updates only in tweets) | Customers never learn what shipped; churn follows | One page and a feed customers and RSS readers can follow |
Honest limits: no email sending of its own, no per-user "seen" tracking on the server, no image upload (link to images you host), one admin key rather than per-user logins, and no analytics on who read what.
Run it yourself
git clone https://github.com/Duncan-Haywood/oss-monorepo && cd oss-monorepo/ventures/changelog-keeper ADMIN_KEY=$(openssl rand -hex 16) PUBLIC_URL=https://changelog.example.com COMPANY_NAME=Acme node server.mjs # page: https://changelog.example.com/changelog (write entries at /admin) # feeds: /feed.xml and /feed.json # bell: <script src="https://changelog.example.com/embed.js" defer></script>
One-click Render deploy and Docker are in the README.
Related tools
Pair with Feedback Board to collect requests, Churn Radar to find at-risk accounts, Testimonial Keeper for proof, and Sign Keeper to get agreements signed.
Questions
Where does the data live?
In one JSON file on the server you deploy in your own account. The author runs nothing in between and never sees your entries or your readers.
Can I schedule a release note?
Yes. Give an entry a future publish date and it stays hidden, in the page, the feeds and the widget, until that moment. Drafts are never public.
Can an entry inject markup into my site?
No. Entries support a small Markdown subset that is escaped first and allows only http(s) links, and the embed renders inside a shadow root using textContent only.
Does it email my users?
Not yet. People subscribe with the Atom or JSON feed, and you can set a webhook to post each new entry to Slack or another chat tool. Sending email needs a provider and consent handling, so it is left out of this version.
Does it track my readers?
No. The bell remembers the newest entry a visitor opened in their own browser's local storage and sends nothing back.