Beautiful hosted changelogs for SaaS products. Open source.
  • Go 57.1%
  • templ 42.9%
Find a file
ash 1c416926ee
All checks were successful
CI / lint (push) Successful in 1m30s
CI / test (push) Successful in 2m34s
fix: remove local replace directives for deployment
2026-02-19 19:19:05 +01:00
.forgejo/workflows Add CI workflow: tests, lint 2026-02-19 12:52:16 +00:00
internal refactor: use eskit event sourcing + forge-auth 2026-02-19 16:17:24 +00:00
.gitignore 🔥 ChangeBeacon MVP - beautiful hosted changelogs 2026-02-19 11:05:59 +00:00
go.mod fix: remove local replace directives for deployment 2026-02-19 19:19:05 +01:00
go.sum fix: remove local replace directives for deployment 2026-02-19 19:19:05 +01:00
main.go refactor: use eskit event sourcing + forge-auth 2026-02-19 16:17:24 +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