Scratch-my-own-itch brand name availability checker. Type a name, pick what kind of brand you're building, and Brandon only checks the platforms that matter.
Nuxt 4 + Nitro, Tailwind, Reka UI, deployed to Cloudflare Workers.
| Category | Platforms | Signal |
|---|---|---|
| Domains | .com, .dev, .io, .app, .co, .me, .xyz |
RDAP (reliable) |
| Developer | GitHub, npm, PyPI, Docker Hub, Vercel, Netlify | Official APIs |
| App store | Apple App Store, Google Play | API + HTML probe |
| Social | Instagram, TikTok, X, YouTube, Threads, Facebook | HTML probe (soft) |
| Creator | Substack, Gumroad, Patreon, Medium, Bluesky | HTML probe + AT |
Social probes are best-effort — those sites block bots, so the UI tags them as probe. Domains, GitHub, npm, PyPI, Docker Hub and Bluesky hit real APIs.
Pick one or more to filter the checker set:
- Developer / SaaS — domains, package registries, Git hosts, deploy platforms
- iOS / mobile — App Store, Play Store,
.app, launch-adjacent socials - Consumer / social — Instagram, TikTok, YouTube, X, Threads, Facebook,
.com - Indie / creator — Substack, Gumroad, Patreon, Medium, Bluesky, short TLDs
Source of truth: app/utils/brand-types.ts.
pnpm install
pnpm dev # http://localhost:3000Nuxt is configured for the cloudflare_module preset (Cloudflare Workers):
pnpm build
pnpm exec wrangler deploy-
Append an entry in
app/utils/brand-types.ts:{ id: 'producthunt', label: 'Product Hunt', category: 'social', brandTypes: ['ios', 'dev'], icon: 'simple-icons:producthunt', method: 'http-probe', }
-
Register a runner in
server/utils/checkers/index.ts:producthunt: (name) => httpProbe(`https://www.producthunt.com/@${name}`, { method: 'GET', availableWhen: 'status-404', }),
The UI, filtering and history pick it up automatically.
shared/types.ts ← shared app + server types
app/
utils/brand-types.ts ← brand types + checker metadata (single source of truth)
composables/
useSearchState.ts ← parallel fan-out with per-checker live status
useSearchHistory.ts ← localStorage-backed history
components/ ← SearchForm, BrandTypeSelector, ResultsGrid, ResultCard, HistoryPanel
pages/ ← index, recent, about
server/
api/check/[platform].get.ts ← dynamic dispatch — one endpoint, many checkers
utils/checkers/
_base.ts ← httpProbe, timeout wrapper, result shape
index.ts ← id → runner registry
domain.ts, github.ts, … ← one file per platform family
Search history lives in localStorage (brandon:history:v1, capped at 50, deduped on (name, brandTypes)). Nothing leaves the browser.
- AI naming suggestions — describe what you're building, get candidate names piped through the checker. The dream feature, the reason this exists.
- Pluggable paid WHOIS (Domainr, WhoisXML) for TLDs with weak RDAP coverage
- Authenticated rate-limit pools for GitHub / npm / Docker
- "Check similar" — Levenshtein-adjacent variants to find a nearby-available name
- Markdown / PDF report export
- CLI (
npx brandon myname) reusing the same checker registry
MIT. Contributions welcome — the adding-a-checker guide above is the fastest way in.