Take away the AI and the integrations and Canny is a forum with votes: posts, upvotes, comments, a status on each post, a roadmap grouped by status and a changelog that tells voters when their request ships. An agent builds that for one product in a sitting, and updown.io left Canny in 2026 for a board it wrote itself. What stays behind is the part that drives the bill: Autopilot pulling requests out of Intercom, Zendesk and sales calls, revenue from the CRM next to each idea, and two-way sync with Jira or Linear.
Before you buildIf fewer than 25 people ever give you feedback, Canny Free already covers it, and Fider or Quackback run free on your own server.
Build me a self-hosted feedback board to replace Canny for one product. Requirements: - Node.js 22 + TypeScript: Fastify with server-rendered EJS pages and a little vanilla JS for voting. One process; `npm start` listens on port 4700. - Storage: better-sqlite3 in ./data/feedback.db; images attached to posts go to ./data/uploads/ (max 5 per post, 2 MB each). - Public side: boards (e.g. Features, Bugs), a post list sorted by top, new or trending, a post page with threaded comments, and one vote per person per post. - Voters sign in with an emailed magic link (nodemailer, SMTP settings in .env). Visitors who aren't signed in can read but not post or vote. Store only email and display name. Spam: a honeypot field and a per-IP rate limit on writes. - Admin at /admin, guarded by ADMIN_PASSWORD from .env: set a status (open, planned, in progress, shipped, closed), merge duplicates (votes move to the kept post, nobody counted twice), edit or delete posts, pin an official reply. - /roadmap shows planned, in progress and shipped as three columns; /changelog lists Markdown entries, each linked to the posts it ships. - When a post changes status, or a changelog entry that ships it is published, email everyone who voted or commented once, with an unsubscribe link. - Import a Canny board CSV (title, details, status, vote score kept as a starting count) and export every post with its votes as CSV. - No passwords, no third-party scripts, no telemetry. Out of scope: SSO with my own app, Intercom or Jira integrations, AI duplicate detection. - README: setup, SMTP config, backups (copy the SQLite file) and a Caddy snippet.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Canny.
Add single sign-on from my own app to the feedback board in this folder. Requirements: - My app signs a short-lived JWT (HS256, secret SSO_SECRET in .env) with id, email and name, and links to /sso?token=... - The board verifies the token with the jose package, creates or updates the voter, and starts a session. Expired or invalid tokens show a clear error. - Keep magic-link sign-in as a fallback, and merge a voter who used both by email. - Out of scope: OAuth providers and SAML. - Update the README with a 10-line example of signing the token in Node.
Add duplicate suggestions to the feedback board in this folder. Requirements: - Embed every post title and body with nomic-embed-text through Ollama (OLLAMA_URL in .env) and store the vectors in SQLite next to the posts. - While someone types a new post title, show up to 3 similar posts above the submit button, each with a vote button. - In /admin, list pairs of posts that look alike so I can merge them. - If Ollama is not running, the board works as before and logs one warning. - Update the README with the Ollama install and model pull commands.
Add an embeddable widget to the feedback board in this folder. Requirements: - A script tag served at /widget.js adds a small Feedback button to any page. - Clicking it opens an iframe with the board's post form and the top 5 posts; no other scripts or cookies are added to the host page. - Allowed host origins come from WIDGET_ORIGINS in .env; refuse others. - Works with the existing magic-link sign-in. - Update the README with the embed snippet.
Connect the feedback board in this folder to GitHub issues. Requirements: - Read GITHUB_TOKEN and GITHUB_REPO from .env. - When I set a post to planned, offer a button that creates a linked issue with the post text and a link back. - A webhook endpoint (secret in .env) moves the post to shipped when the linked issue is closed as completed, which triggers the voter email. - Out of scope: syncing comments. - Update the README with the webhook setup steps.
Product teams pay because Canny sits between support, sales and the roadmap: requests arrive from the tools they already use, get tied to account revenue and land in Jira or Linear without copy-paste. For a solo founder with a few hundred users that plumbing matters less than the bill, which grows with every person who votes.
Estimate · A small VPS runs it for about $5 a month, or nothing extra if you already have one. Sign-in and status emails fit in most SMTP free tiers at this volume. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0/workspace | $0/workspace | 25 tracked users, 5 managers, unlimited contributors, boards and posts; Autopilot AI included. |
| Pro | $99/workspace | $79/workspace | Starts at 100 tracked users and 10 managers; adds project-management integrations (Jira, Linear, ClickUp, Asana, GitHub) and advanced privacy. |
| Business | custom | — | 5,000+ tracked users, SSO (Okta, Entra ID, OIDC, OneLogin) and CRM integrations (HubSpot, Salesforce). |
Free covers 25 tracked users and 5 managers, with unlimited boards and posts.
Yes. An AI coding agent such as Claude Code, Codex or Cursor can build a usable personal version in one session with the prompt on this page, running on your own machine.
About $99 a month on the Pro plan, $1,188 a year (checked 2026-10-13).
Autopilot, which finds requests in Intercom, Zendesk, Gong and other conversations and merges duplicates; Revenue weighting from HubSpot or Salesforce: which accounts asked for what; Two-way sync with Jira, Linear, ClickUp and GitHub issues; Single sign-on, so customers vote with the account they already have in your app; Hosting, spam filtering and uptime run by someone else. If any of those matter to you, keep paying.
Yes: Fider (open source), Quackback (open source), LogChimp (open source).