How I Built HackerBadges: Achievement Badges for Indie Hackers
Every indie hacker knows the feeling.
You hit $1K MRR. You want to celebrate. You screenshot your Stripe dashboard and post it on Twitter.
But there’s a problem: anyone can fake a screenshot.
That’s why I built HackerBadges.
The Problem
The indie hacker community loves transparency. We share our revenue numbers, our user counts, our wins and losses.
But there’s no standard way to do it.
Some people screenshot Stripe. Others use Baremetrics. Some just… type numbers. And honestly? There’s no way to know what’s real.
I wanted something better:
- Beautiful — Not an ugly dashboard screenshot
- Verified — Actually connected to real data
- Shareable — Works on Twitter, LinkedIn, websites
- Celebratory — Makes milestones feel like achievements
So I built it.
The Build
I’m a firm believer in shipping fast and iterating.
Week 1: MVP
I started with the simplest possible thing: a badge generator. You type in your milestone, pick a style, and get a badge you can download.
No accounts. No payments. Just badges.
I shipped it in a week and posted on Twitter.
Week 2–3: Verification
The feedback was immediate: “Cool, but how do I know it’s real?”
So I added integrations:
- Connect your Stripe account
- We fetch your actual revenue
- The badge shows “Verified by Stripe” ✓
Now when you share a $5K MRR badge, people know it’s legit.
Week 4: Polish
Get Pritam Ghosh’s stories in your inbox
Join Medium for free to get updates from this writer.
I added:
- Multiple badge styles (Neo-brutalist, Glassmorphism, Holographic)
- Rarity tiers (Common, Rare, Epic, Legendary)
- Milestone tracking (auto-generate badges when you hit goals)
- Support for LemonSqueezy and Polar
The Tech Stack
For those curious about how it’s built:
- Frontend: Next.js 15 (App Router)
- Backend: Convex (real-time database)
- Auth: Convex Auth
- Payments: Stripe, LemonSqueezy, Polar integrations
- Hosting: Vercel
- Styling: Tailwind CSS
Why Convex? I wanted real-time updates without the pain of managing sockets. When your revenue updates in Stripe, your badge can update instantly. Convex makes that trivial.
What I Learned
1. Build for yourself first
I’m an indie hacker. I wanted to celebrate my milestones. So I built the tool I wished existed.
When you’re your own target user, every decision is easier.
2. Verification is a feature
There are thousands of badge generators online. None of them verify anything.
That one feature — connecting to real payment data — is what makes HackerBadges different. It’s not just about looking pretty; it’s about being trustworthy.
3. Community matters
The indie hacker community is incredibly supportive. When I shared my progress on Twitter, people gave feedback, suggestions, and encouragement.
Build in public. It works.
4. Fun is underrated
Badges are inherently fun. There’s something satisfying about earning a “Legendary $100K MRR” badge with a golden glow.
Gamification works because humans like recognition. Don’t be afraid to make your product enjoyable.
What’s Next
I’m working on:
- Failure Badges — Celebrate the L’s, not just the W’s (“Pivot #7”, “$0 MRR This Month”)
- Product Pages — A portfolio for your startup journey
- GitHub Stats — Badges for developers (stars, commits, contributions)
The goal is to become the go-to platform for indie hackers to showcase their journey.
Try It Yourself
If you’re an indie hacker with milestones to celebrate:
- Go to hackerbadges.com
- Create a badge (free, no signup required)
- Or connect your Stripe/LemonSqueezy for verified badges
Every milestone deserves recognition. Big or small.
If you found this useful, give it a clap and follow for more indie hacker content. Building in public at @iPritamX.




