Documentation
How Harku works — the lightweight feedback widget that carries an idea from a suggestion all the way to shipped, from one script.
What Harku is
Harku is an embeddable feedback widget for indie devs and micro-SaaS. You paste one line of script into your site — like installing a chat widget — and your users can propose ideas, upvote them, follow a public roadmap, and read your changelog.
You manage everything from the Harku dashboard: triage suggestions by votes, move each one through its lifecycle, and publish announcements. That closes the loop — a user proposes → you prioritize → you build → you announce.
The widget
The widget is a small floating Feedback button that loads from a single async script. Clicking it opens a panel inside an isolated iframe, so your site's styles and the widget never interfere with each other.
- Suggestions — the list of ideas, sorted by votes, with one-click upvotes.
- New suggestion — a short form (a title, plus an optional description).
- Roadmap — what's planned, in progress, and shipped.
- Changelog — your published announcements, with an unread badge.
The widget is read-only except for two actions: creating a suggestion and voting. Everything else simply reflects what you manage in the dashboard.
Anonymous voting
No login is required to vote or suggest. On first load the widget generates a random id and keeps it in the visitor's browser, using it only to stop double-voting — the database enforces one vote per id per post. Votes are optimistic (the count updates instantly) and reversible.
Because the id lives in the browser, it isn't tied to any identity and can be cleared. It prevents casual double-votes, not determined abuse.
The lifecycle
Every suggestion moves through a status you control from the dashboard:
- Open — newly suggested, collecting votes.
- Planned — you've decided to build it.
- In progress — being worked on.
- Shipped — done. It's never deleted, so it stays visible, and it can be linked to a changelog entry.
- Declined — not planned; kept off the roadmap.
Closing the loop
The public roadmap shows Planned, In progress and Shipped. The changelog is where you announce what landed — optionally linked back to the suggestion that asked for it, so the people who voted see their idea ship.
The dashboard
Sign in with email and password, create a project for each site you own, and you get:
- Projects — one per site, each with its own public key and appearance (accent color, button position, light/dark).
- Suggestions — sorted by votes; move each between statuses or hide spam.
- Roadmap board — a drag-and-drop board where you can also add your own items.
- Changelog editor — write announcements, optionally linked to a shipped suggestion.
Under the hood
The widget never talks to your database directly. It calls a small public API — validated by your project's public key — for everything it does: reading suggestions, creating one, voting, and fetching your config and changelog. Owner data is protected by row-level security; only the safe, public operations are ever exposed.
Ready to add it? See the install guide.