DEV Community

Jamie Davenport
Jamie Davenport

Posted on

Story of Vox

Read the original post here

Over the years, I've used countless tools to collect user feedback—Canny, UserJot, and more. I even built a simple open-source feedback widget for Linear earlier this year, which is now used by a few larger companies. And yet, I was never fully satisfied. These tools always felt heavier than they needed to be, requiring too much configuration and offering too little flexibility.

That's why I built Vox — a simple, lightweight customer feedback tool designed specifically for solo founders, indie hackers, and small teams. Here's a look at what drove me to build it and what makes it different.

Simplified Configuration

Most feedback tools require a lot of manual setup:

  • Open a dashboard
  • Click “New Project”
  • Type a name
  • Copy a snippet of code into your app

This might not sound like much, but for someone who launches multiple products, it quickly becomes tedious.

With Vox, you only need an API key. Everything else happens in code. You can add tags to filter feedback in the dashboard, so the same snippet of code works for multiple apps—just update the app tag and you're collecting feedback in minutes. No dashboard juggling, no repetitive setup.

Headless Styling

Most feedback widgets come with their own styling baked in. That's limiting if you want your widget to fit seamlessly into your app. Vox is headless, giving you full control over how it looks. You can design it yourself—or let an AI agent do it for you. Being headless also makes Vox framework-agnostic, so it works anywhere.

Full Control

I also wanted full control over the feedback process. My apps already handle authentication and user data, and I wanted to leverage that when collecting feedback. Vox makes it easy to attach user information and metadata, giving you richer insights without forcing your users to fill out redundant forms.

Example

Adding Vox to a Next.js app is simple and gives you full control over tags. On the backend, set up a feedback route with your API key and any tags you want—like app or user—so you can filter and categorise feedback easily.

import { createFeedbackHandler } from "voxjs/server";
import { NextRequest } from "next/server";
import { getAuth } from "@/auth";

export async function POST(request: NextRequest) {
    const auth = await getAuth(); // Your custom auth logic.

    if (!auth) {
        return Response.json({ error: "Unauthorized" }, { status: 401 });
    }

    return createFeedbackHandler({
        tags: {
            app: "my-app", // Your app name.
            user: auth.user.email,
        },
    })(request);
}
Enter fullscreen mode Exit fullscreen mode

On the frontend, just call:

import { feedback } from 'voxjs/client';

await feedback('This is great!');
Enter fullscreen mode Exit fullscreen mode

This approach keeps setup minimal, works with any framework, and ensures feedback is always tagged the way you want.

What's Next

I already use Vox in all my projects, but my next step is to commercialise it. My focus will be on marketing and partnering with founders and indie hackers to help them collect better feedback, faster.

Vox isn't about reinventing the wheel—it's about making feedback simple, lightweight, and under your control. For small teams and solo founders who want to move fast without sacrificing insight, that's a big deal.

If you're interested in integrating Vox for your customer feedback needs, you can sign up here.

Top comments (0)