Beautiful hosted changelogs for SaaS products. Open source.
  • Go 69.6%
  • templ 30.4%
Find a file
Einar Sveinsson b6ba35b4f1
Some checks failed
CI / lint (push) Failing after 42s
CI / test (push) Failing after 1m21s
fix: add auth to dashboard mutations and org-level tenant isolation
- Add requireKey middleware to DashboardCreateEntry, DashboardUpdateEntry,
  DashboardDeleteEntry endpoints — Refs ash/ideas#29, ash/ideas#38
- Add org ownership verification to all API endpoints that access
  project-scoped resources (create/update/delete/list entries, list
  projects) — Refs ash/ideas#39
2026-03-26 16:07:18 +00:00
.forgejo/workflows Add CI workflow: tests, lint 2026-02-19 12:52:16 +00:00
internal fix: add auth to dashboard mutations and org-level tenant isolation 2026-03-26 16:07:18 +00:00
.gitignore 🔥 ChangeBeacon MVP - beautiful hosted changelogs 2026-02-19 11:05:59 +00:00
go.mod fix: add input validation for InitChangelog and CreateEntry 2026-02-23 03:05:38 +00:00
go.sum fix: add input validation for InitChangelog and CreateEntry 2026-02-23 03:05:38 +00:00
main.go fix: add auth to dashboard mutations and org-level tenant isolation 2026-03-26 16:07:18 +00:00
README.md 🔥 ChangeBeacon MVP - beautiful hosted changelogs 2026-02-19 11:05:59 +00:00

🔥 ChangeBeacon

Beautiful hosted changelogs for SaaS products. Keep your users in the loop with gorgeous release notes, RSS feeds, and embeddable widgets.

Features

  • REST API — Create/update changelog entries programmatically
  • Public Changelog Pages — Beautiful, dark-themed pages per project
  • Entry Types — Feature, fix, improvement, breaking change with badges
  • Markdown Support — Rich descriptions with full markdown
  • Dashboard — Datastar-powered real-time management UI
  • RSS Feeds — Auto-generated per project
  • Embeddable Widget — JS snippet for in-app changelog overlay
  • Multi-Project — Manage multiple products from one instance
  • SQLite — Zero-config, single-file database
  • Single Binary — Deploy anywhere

Quick Start

go build -o changebeacon .
./changebeacon

Server starts on http://localhost:8090. Set PORT and DB_PATH env vars to customize.

API

Create a Project

curl -X POST http://localhost:8090/v1/projects \
  -H "Content-Type: application/json" \
  -d '{"name":"My App","slug":"my-app"}'

Response includes your api_key — save it!

Create an Entry

curl -X POST http://localhost:8090/v1/entries \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Dark mode support",
    "description": "We added a beautiful dark mode. Toggle it in settings.",
    "type": "feature"
  }'

Update an Entry

curl -X PATCH http://localhost:8090/v1/entries/ENTRY_ID \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title": "Updated title"}'

Entry Types

Type Badge
feature Feature
fix 🐛 Fix
improvement 💎 Improvement
breaking ⚠️ Breaking

Public Pages

  • Changelog: http://localhost:8090/changelog/{slug}
  • RSS Feed: http://localhost:8090/changelog/{slug}/rss
  • Dashboard: http://localhost:8090/dashboard

Embeddable Widget

Add this to your app:

<script src="http://localhost:8090/changelog/my-app/widget.js"></script>

Shows a floating widget with latest changelog entries.

Pricing

  • Free — 1 project, 50 entries, ChangeBeacon branding
  • Pro ($9/mo) — 5 projects, unlimited entries, custom branding, custom domain
  • Business ($29/mo) — Unlimited projects, team access, API webhooks

Tech Stack

  • Go (stdlib net/http)
  • Datastar (SSE-based reactive UI)
  • SQLite (via go-sqlite3)
  • Single binary, zero dependencies

License

MIT