
terravidhal/logoforge
Developer tools971 brand logos for developers: SVG files, typed React components, shadcn registry (official directory), MCP server. African brands included.
Overview
1,011 clean SVG logos of the tools developers use — install any of them as a typed React component with one command, copy the SVG, or build a whole “Trusted by” logo cloud in seconds. - npx shadcn add @logoforge/stripe writes components/logos/stripe.tsx — no package to install, no CSS touched, nothing but React. , , : TypeScript only offers the variants a logo really has. - Near-black marks (GitHub, Vercel, Notion…) ship a dark file; the component switches with your .dark class — Tailwind v3 and v4, no JavaScript. - Badge-style marks (Adobe apps, AWS services) get a knockout one-color version — the symbol cut out of its shape — not a solid blob. - Pick logos on /cloud, choose grid, marquee or bento; one shadcn add installs the section and every logo it imports. - MTN, Orange Money, M-Pesa, Flutterwave, Paystack, Moniepoint, OPay, Kuda, Chipper Cash, Yoco, Interswitch, Airtel, Orange, Andela — the brands most logo sets leave out.
README
⭐ If Logoforge saves you a logo hunt, a star helps other developers find it.
Why Logoforge
- One command, one typed component.
npx shadcn add @logoforge/stripewritescomponents/logos/stripe.tsx— no package to install, no CSS touched, nothing but React.,, ``: TypeScript only offers the variants a logo really has. - Dark mode that works. Near-black marks (GitHub, Vercel, Notion…) ship a dark file; the component switches with your
.darkclass — Tailwind v3 and v4, no JavaScript. - Mono that keeps its detail. Badge-style marks (Adobe apps, AWS services) get a knockout one-color version — the symbol cut out of its shape — not a solid blob.
- Logo clouds in one command. Pick logos on /cloud, choose grid, marquee or bento; one
shadcn addinstalls the section and every logo it imports. - African brands. MTN, Orange Money, M-Pesa, Flutterwave, Paystack, Moniepoint, OPay, Kuda, Chipper Cash, Yoco, Interswitch, Airtel, Orange, Andela — the brands most logo sets leave out.
- Built for AI editors. An MCP server lets Claude, Cursor, Windsurf or VS Code search and add logos for you.
- Every file is traceable. Each variant records its source, its exact upstream file and its licence.
Use it
shadcn CLI
@logoforge is in the official shadcn registry directory — no setup needed. Install any logo (slug = the logo page URL):
npx shadcn@latest add @logoforge/stripe @logoforge/supabase
import { StripeLogo } from "@/components/logos/stripe";
// brand colors, auto dark mode
// currentColor
// force a theme (no Tailwind needed)
// decorative: aria-hidden
SVG files
Every variant is a plain file: https://logoforge.terravidhal.me/logos//.svg
| Variant | What it is | When |
|---|---|---|
icon |
The mark, brand colors | always |
icon-mono |
One color, currentColor |
most logos |
icon-dark |
For dark backgrounds | when the mark would vanish on dark |
wordmark / wordmark-dark |
The full lockup | when the brand has one |
Or grab them straight from this repository: logos/.
MCP server (Claude, Cursor, Windsurf, VS Code)
claude mcp add --transport http logoforge https://logoforge.terravidhal.me/mcp
Tools: search_logos, list_categories, get_logo, get_logo_svg, get_logo_component, build_logo_cloud.
Setup for every editor: docs/mcp.
JSON API
curl https://logoforge.terravidhal.me/api/logos.json # every logo
curl https://logoforge.terravidhal.me/api/logos/stripe.json # one logo, with sources
Static, no key, CORS open. Or read data/logos.json directly.
What’s in this repository
logos//*.svg optimized SVG files, one folder per logo
components/.tsx the generated React component (what the registry installs)
data/logos.json GENERATED manifest: names, aliases, categories, colors, variants, sources
data/curation.json which logos ship and where each comes from ← edit this
data/overrides.json reviewed fixes, each with its reason ← and this
data/additions// hand-sourced artwork + source.json (official or public domain)
data/backgrounds.json GENERATED badge detection for knockout monos
scripts/ the pipeline: import · analyze · check
reports/ import report + contact sheets for visual review
How the set is built
- Sources, pinned —
sources.lock.jsonfixes the Simple Icons version and the gilbarbara/logos commit. - Licence filter — CC0 only from the sets: Simple Icons icons published under another licence (CC BY, GPL, MIT…) are dropped. Brands no free set covers are added by hand in
data/additions/, public-domain files first, the brand’s own artwork otherwise — each with itssource.json. - Optimize & vet — SVGO (viewBox kept, no fixed size, ids prefixed by slug); any script, event handler, embedded image or external reference is rejected.
- Variants — dark files are derived automatically (black ↔ white swap for knockout marks, near-black text to white, dark brand colors lightened to a 3:1 contrast, masks left untouched); monos come from Simple Icons, or are derived — as knockouts for badge marks detected in headless Chrome.
- Components — SVGR turns each variant into JSX; ids are suffixed per variant so several can share a page.
- Human review — every run writes contact sheets (
reports/review-NN.html); anything flagged must be looked at before it ships, and the decision is recorded indata/overrides.json.
npm install
npm run import # build logos/, components/, data/logos.json, reports/
npm run analyze # detect badge icons (needs Chrome; CHROME_PATH to override), then import again
npm run check # validate everything — runs in CI on every pull request
Contributing
Request a logo — open an issue with the brand name and a link to its official brand assets.
Add a logo from a free set:
- Add an entry to
data/curation.json:{ "slug": "acme", "si": "", "gb": "", "categories": ["devtools"] }. npm run import && npm run analyze && npm run import, then open the contact sheet inreports/and look at your logo on light and dark, in color and mono.- Fix anything off in
data/overrides.jsonwith areason, runnpm run check, open a pull request.
Add a logo no free set has: create data/additions//icon.svg from a public-domain file or the brand’s own website, plus a source.json (origin, page, file, license: public-domain or trademark, retrieved), and add "addition": true to its curation entry. Never trace a PNG: if no vector exists, the logo waits.
Categories are listed in data/categories.json.
Everyone taking part follows the Code of Conduct.
Licences and trademarks
- Tooling and data (scripts, components template, manifest): MIT.
- Artwork: from Simple Icons (CC0 1.0), gilbarbara/logos (CC0 1.0), Wikimedia Commons public-domain files, and — for a few brands no free set covers — the brands’ own artwork. See CREDITS.md; every file’s source is in
data/logos.json. - Trademarks: all product names, logos and brands are property of their respective owners. They are provided for identification only and their presence does not imply endorsement. A free licence on a file grants nothing on the brand: use a logo to refer to its product, and follow the brand’s guidelines.
Brand owners: to remove or correct a logo, write from your company’s domain to the address on logoforge.terravidhal.me/legal — handled within 72 hours.
Install
npx shadcn@latest add @logoforge/stripe