--- title: "Wishcairn: a feature request board for a software company" author: "@chris" author_url: https://elements.dev/u/chris published: 2026-09-30T20:05:21.222Z url: https://elements.dev/demos/01a0f3eb-ef9c-73ed-9b4c-4e490c420ecc kind: post format: article --- # Wishcairn: a feature request board for a software company by [@chris](https://elements.dev/u/chris) ยท 2026-09-30 ## Description Feature requests with live votes and comments, statuses, merges, a public roadmap, a changelog and voter emails. Wishcairn needed votes and comments that show up on every open page, statuses and merges run by the team, a public roadmap and changelog, and email to voters when their request moves. Each of those is a part of Elements, so the agent spent its 19 minutes on the board itself. **What Elements gave the app** - **Live requests, votes and comments.** Requests, votes and comments are LiveTables. Vote counts, status changes and merges are written in SQL, and triggers notify each table's channel, so the board, the roadmap and every open request page move together. - **Votes through a view.** A signed-in visitor opens their own votes as a view, so voting is an insert or delete through it, with the voter set from the session. - **Statuses and merges.** The team moves and merges requests with `@rpc` functions. A status change is recorded in the request's thread and schedules the voter email in the same transaction, and a merge moves every vote onto the original request. - **Voter emails.** A background job sends each voter their own email, naming the request a duplicate was merged into. - **A changelog tied to requests.** Publishing a release links the requests it covers and can mark them shipped, which emails their voters and moves them on the roadmap. - **Data from SQL files.** Two migrations define the board and its triggers, then seed the feedback board for a team workspace app: 12 accounts, 30 requests across every status, votes, comment threads, a merged duplicate and three changelog entries. **What the project server gave the agent** The project server runs alongside the agent and answers as soon as a file is saved: it type-checks the templates, TypeScript and SQL, applies migrations and reruns the tests, so every question came back right away and the agent kept building. **What shipped** The app type-checks with zero errors and all 36 tests pass. Every page works on desktop and phone, and live updates arrive across tabs, such as votes, comments and a roadmap that moves when a release ships.