💡 Open Source • Self-hosted • Anonymous-first

Ideabug
Feedback, minus the SaaS tax

Drop one script tag into your app. Your users get a bell, a changelog, a bug report form, and a public roadmap. You get all the data — on your server, on your terms.

In-app Announcements
Changelog with read-tracking
Bug Reports
Auto-attached page context
Feature Voting
Build what users want
Feedback where your users actually are

Why Ideabug?

Product feedback tools are either expensive SaaS with per-seat pricing, or they force your users off-site to a public board. Ideabug is neither: it's a widget on your domain, a database you own, and code you can read.

The SaaS way

  • • $50–$200/month per seat, forever
  • • Your feedback data lives on someone else's server
  • • Users redirected to a third-party subdomain to vote
  • • Sign-up walls before anyone can submit
  • • Branding and theming locked behind "Enterprise"

The Ideabug way

  • ✓ Self-host once, run forever. MIT licensed.
  • ✓ Your DB, your backups, your compliance story
  • ✓ Widget lives inside your app — users never leave
  • ✓ Anonymous by default, JWT upgrade when they log in
  • ✓ Standalone public roadmap page included

One widget. Four jobs.
Announcements, bug reports, feature requests with voting, and a public roadmap — all from a single drop-in script.

What's in the box

Product Feedback Features

Everything you need to close the loop between your product and your users

In-app Announcements

Publish product updates, ship changelogs, broadcast breaking changes. Per-user read tracking, per-user mute, and a bell badge that just works.

Read-state synced across devices

One-click Bug Reports

Users submit bugs from inside your app. Ideabug auto-attaches the current URL, viewport size, and user agent so you're not debugging blind.

Context, automatically

Feature Requests + Voting

Users suggest what they want. Other users vote. You prioritize based on actual demand instead of whoever emailed you last.

Anonymous voting supported

Public Roadmap

Now / Next / Shipped columns, available inside the widget and as a standalone shareable page. Transparency without the overhead of maintaining a Notion doc.

Standalone public URL included

Audience Segmentation

Pass segments (plan, region, role) in a signed JWT and target announcements to specific cohorts. Tell Pro users about Pro features, EU users about EU changes.

Auto-managed contact ↔ segment links

Anonymous-first Identity

Users interact without signing up. When they later log into your app, their anonymous votes and read-state are atomically merged into their identified profile via JWT.

No data lost on login
Widget + Admin

What it looks like

The user-facing widget lives in your app. The admin panel lives on your server.

Expanded widget

What your users see

Expanded Ideabug widget with Updates, Suggest, and Roadmap tabs

Announcement detail

Rich changelog entries

Ideabug announcement detail view inside the widget

Public Roadmap

Now / Next / Shipped — shareable standalone page

Ideabug public roadmap view with Now, Next, and Shipped columns

Announcements admin

Draft, schedule, ship

Ideabug admin panel announcements list view

Tickets inbox

Bugs + feature requests, triaged

Ideabug tickets list showing bug reports and feature requests

Contacts

Anonymous + identified users

Ideabug contacts list showing anonymous and identified users

Segments

Target announcements to cohorts

Ideabug segments list for audience targeting
Quick Start

Add it in one script tag

Two lines of HTML get you the default bell. Go deeper when you're ready.

1

Drop the widget into your app

Put a target div where you want the bell (usually your top nav), and load the script from your Ideabug host.

<div id="ideabug-feedback"></div>

<script
  src="https://YOUR-IDEABUG-HOST/script.js"
  data-ideabug-host="https://YOUR-IDEABUG-HOST"
  data-ideabug-target="#ideabug-feedback"
  defer
></script>
2

Self-host the server

Standard Rails app — clone, set credentials, migrate, boot.

git clone https://github.com/humadroid-io/ideabug.git
cd ideabug
bundle install
bin/rails db:setup
bin/rails server
3

Identify users via JWT (optional)

When a user logs into your app, sign an RS256 JWT in your backend and return it to the widget. Anonymous reads + votes are merged into the identified contact atomically.

window.IdeabugWidget.configure({
  jwt: async () => fetch('/api/ideabug-token')
    .then(r => r.text())
});

That's it. Your users have a feedback channel; you have the data.

View Full Documentation

Free & Open Source

Ideabug is MIT licensed. Self-host it, fork it, rebrand it. No per-seat pricing, no feature gating, no dashboard-usage caps.

MIT
Licensed
1 tag
To integrate
Your
Data, your server

One of several open source projects from the team at Humadroid.

Running Ideabug in production? We'd love to hear about it. Share your story on GitHub or reach out to us.