Skip to main content
Glama

YouAsked

Feature requests your users can vote on, and a "you asked, it's live" moment when you ship.

  • apps/api: Hono on Cloudflare Workers + D1. Public widget API (/v1/*, publishable key), admin API (/v1/admin/*, secret key) and a test dashboard at /admin.

  • packages/react: @youasked/react, the widget for React and Next.js, plus @youasked/react/server (signUser).

  • packages/js: @youasked/js, the same widget for any other website (Vue, Svelte, Angular, Nuxt, Astro, plain HTML), as a script tag or ES module.

  • packages/react-native: @youasked/react-native, native views for React Native and Expo.

  • packages/swift: the iOS SDK in SwiftUI, installed with Swift Package Manager from this repo (Package.swift at the root).

  • packages/android: the Android SDK in Jetpack Compose, installed from JitPack (com.github.youasked:youasked).

  • packages/cli: youasked, the setup command. npx youasked init creates an app, saves the keys and wires up the widget.

  • packages/mcp: @youasked/mcp, an MCP server so a coding agent can list requests, reply, set status and merge.

Quick start

npx youasked init

Then, to let your agent read and ship requests:

claude mcp add youasked -e YOUASKED_SECRET_KEY=ya_sec_… -- npx -y @youasked/mcp

Commit with "closes YA-12" and the request ships. POST /v1/signup {name, email?} is what init calls (5 apps per IP per day while in beta).

Related MCP server: @voteship/mcp-server

Add it to a React app by hand

import { YouAsked } from "@youasked/react";

<YouAsked appKey="ya_pub_…" user={{ id: user.id }} signature={signatureFromYourServer} />

Sign the user id on your server so nobody can vote as someone else:

import { signUser } from "@youasked/react/server";
const signature = await signUser(process.env.YOUASKED_SECRET_KEY!, user.id);

Leave out user for anonymous visitors. trigger="none" hides the floating button; open it with useYouAsked().open() or openYouAsked(). Colours follow shadcn tokens automatically, or pass appearance.

More ways to ask

  • Show us: the composer has a "Show us" button. The sheet steps aside, the person drags boxes over what they mean on your page, and a screenshot (max 1600px wide, WebP/JPEG) goes with their message. The screenshot library loads only when someone taps it. Needs the UPLOADS R2 bucket (wrangler r2 bucket create youasked-uploads). Every request also records the page path (no query string).

  • <AskAbout topic="charts" prompt="Want more from charts?" />: a quiet link next to a feature. Opens the composer asking "What would make charts better?" and saves the topic with the request.

  • <AskForIt query={searchText} />: for empty search states, "Can't find “export”? Ask for it". After a locked feature, use openYouAsked({ view: "new", draft: "Export to Excel", topic: "locked" }). openYouAsked also takes topic and placeholder.

  • What's new: on open (or as a toast on page load), people see what shipped since they were last shown the list, with a celebration if it was theirs. Tracked per person on the server (users.last_whats_new_at, anonymous visitors by device id), only counting things that shipped after their first visit, once per visit.

  • Credit and early access: identified users with a name can tick "Credit me when it ships" (the ship note then says "Thanks to Priya for asking"). Voters on planned or in-progress requests can tap "Try it early"; the dashboard lists them.

  • <YouAsked demo />: no appKey, no network. Sample requests, working votes, posts and comments, and a pretend team that replies a few seconds later. For docs, Storybook and landing pages.

Develop

npm install
npm run dev:api                      # wrangler dev, local D1
npm run build                        # builds @youasked/react and @youasked/mcp
npm run typecheck                    # api, react, cli, mcp

Create an app: npx youasked init --api http://localhost:8787, or POST /v1/signup, or POST /v1/apps with Authorization: Bearer $ADMIN_TOKEN and {"name": "..."}.

License

The SDKs and tools under packages/ (React, JS, React Native, Swift, Android, the CLI and the MCP server) are MIT. The hosted API, dashboard and website under apps/ are FSL-1.1-MIT: you can read, run and self-host them for your own apps, but not offer them as a competing hosted service. Each release becomes MIT two years after it ships. See LICENSE.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to interact with VoteShip feature requests, voting boards, roadmaps, and changelogs, including public board access without credentials and authenticated project administration with a project secret.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to work a self-hosted kanban board as first-class users, exposing eleven kanban_* tools over a stateless Streamable HTTP endpoint for listing projects, stages, members and custom fields, and for creating, updating, moving and deleting tasks. Authenticates with bearer-token scopes so read-only or write access can be granted per agent, with every mutation audited.
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Gives AI coding agents native tools to pull their next prioritized, unblocked task with a full briefing (description, acceptance criteria, context files, conventions), comment and tick off criteria with evidence, ask the human decision-maker questions, and submit structured handoffs for review. It lets agents plan epics and sprints, report checks, create new tasks, and release work with checkpoints — all against a self-hosted board rather than files in the repo.
    6 npm
    1
    MIT