Skip to content

zernonia/brandon

Repository files navigation

Brandon

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.

What it checks

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.

Brand types

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.

Develop

pnpm install
pnpm dev         # http://localhost:3000

Deploy

Nuxt is configured for the cloudflare_module preset (Cloudflare Workers):

pnpm build
pnpm exec wrangler deploy

Adding a new checker

  1. 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',
    }
  2. 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.

Architecture

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.

Roadmap

  • 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

License

MIT. Contributions welcome — the adding-a-checker guide above is the fastest way in.

About

Check whether a brand name is available across domains, dev platforms, and social networks — tailored to the kind of brand you are building.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors