Build in public tools: what you actually need
The honest build-in-public stack, compared: screenshots vs hand-updated pages vs live verified metrics — what each option costs, and where each one breaks.
The build-in-public stack is smaller than the listicles suggest. Building in public needs three layers: a place to post, a place your numbers live, and a way to spread them. Most of it you already have.
Layer 1: Where you post
X (Twitter) for the #buildinpublic community, LinkedIn if your buyers wear suits, a personal blog for the long-form retros. Free, and you don't need new tools here — you need the posting rhythm.
Layer 2: Where your numbers live
This is the layer people improvise badly. Screenshots go stale, hand-updated Notion pages die after three weeks, and self-reported numbers carry no proof. What you want is a public page wired to the actual sources — GitHub, your payment provider, your uptime monitor — so the numbers stay true without you touching them.
The options people actually pick, compared on what decides it:
| Option | Live data | Verified | Cost | Setup & upkeep |
|---|---|---|---|---|
| Screenshot in a post | No — frozen at capture time | No, and croppable | Free | Seconds, and again every time you post |
| Hand-updated Notion page | Only as fresh as your last edit | No, self-reported | Free | Quick to build, then a weekly chore most drop by week three |
| Single-metric verified badge (TrustMRR-style) | Yes, for one number | Yes, for that one number | Typically free | Connect once — but nothing else fits on it |
| Personal blog + hand-wired badges | Whatever you wired, until it breaks | Depends on the source | Your hosting, plus your time | You build every integration and you fix every one |
| infrapage | Yes — 30+ widget types across 15+ integrations | Yes — third-party API metrics carry a live-verified mark | €29 one-time claim, optional €9/mo Pro | Connect a source, drop widgets on a grid; refreshes every 12h, hourly on Pro |
Read that honestly: if MRR is the only number you'll ever publish, a single-metric badge is enough — use one and keep the €29. A multi-source page earns its keep when proof means several signals at once: revenue, uptime and shipping activity on one URL you link from everywhere.
This is the layer infrapage is built for, so here are the real specs, limitations included:
- What it connects to: GitHub (repos, CI, commit activity, releases), revenue via Polar or Stripe, analytics via Umami or Google Search Console, uptime via plain URL checks, Uptime Kuma, or Beszel, plus Sentry, Linear, Vercel, Discord, and more — over 30 widget types across 15+ integrations.
- Public/private per widget: each widget is individually visible or hidden, and sensitive metrics can be shown as growth-only ("+12% this month") without revealing the absolute number.
- Verified, not self-reported: metrics pulled from third-party APIs (GitHub, Stripe, Polar, Sentry…) earn a live-verified mark — the closest thing to proof in build-in-public.
- What it costs: building a dashboard is free. Making a page public is a one-time €29 claim — the page stays live forever, no subscription required. Pro (€9/mo) adds private widgets, custom domains, removing the branding, hourly refresh, and page analytics.
- The honest limitations: claimed pages refresh every 12 hours (hourly is Pro). Grafana, Plausible, and GitLab integrations aren't shipped yet — they're on the roadmap, and you can vote on what comes next. If you need deep drill-downs and alerting, that's a monitoring tool's job, not a dashboard's.
- No lock-in: every metric is read from an API you already own, and a read-only API key gets your own data back out whenever you want it.
The DIY alternative — a static site with embedded badges — works too, and costs only your time. The failure mode is maintenance: every hand-wired integration is something that silently breaks.
Layer 3: How the numbers spread
The multiplier on everything above: don't make people visit your page — put the live numbers where people already are. Every public infrapage widget doubles as a live README badge and a share card for X and LinkedIn. Paste once; the numbers stay live. Milestones (crossing 100 users, €1k MRR) generate their own shareable cards with permalinks, and a weekly recap card summarizes your week-over-week deltas when it's time to post the update.
The short version
Post on one channel, keep your numbers on one live public page, and embed those numbers everywhere you ship. Tools beyond that are procrastination. If you're still deciding what to share in the first place, start with the building-in-public guide — then see how others run their pages, and check the pricing details when you're ready to claim yours.
Related Posts
The open source SEO tool stack for solo devs
DataForSEO for data, OpenSEO for the interface, MCP so an agent can drive both. What a one-person SEO setup costs when you stop renting seats — and where the agent actually helps.
Building in public: the practical guide for solo devs and indie hackers
What building in public actually means, why it works, how to start without oversharing, and which numbers are worth showing. The no-fluff version.
Build in public examples: real pages with live numbers
What building in public looks like in practice — live project pages with real MRR, uptime, and GitHub activity. Not screenshots, not launch-day numbers.