Skip to main content
Trace runs two public component platforms that share one backend, one auth system, and one database — but serve different halves of an EDA component:

Trace Symbols

symbols.buildwithtrace.com — 30,000+ schematic symbols across 251 libraries. Browse, search, copy/download .kicad_sym, generate with AI, and contribute.

Trace Footprints

footprints.buildwithtrace.com — ~24,690 PCB footprints across ~214 libraries (Trace + CERN). Browse by library, copy/download .kicad_mod, generate with AI.

What they have in common

Both are thin Next.js 16 clients. They hold no AI logic, model prompts, or layout engines — every generation, save, contribution, comment, and rating request is proxied to the Trace backend at https://api.buildwithtrace.com. Browsing and search are served from pre-built static JSON indexes committed into each repo.

Architecture

Thin-client proxy model, the shared generated_components table, and where each responsibility lives.

Authentication

Shared Trace JWT auth — token storage, login, refresh, and fetchWithAuth.

Data pipeline

The offline Python sync + indexers that build the catalog JSON.

Deployment

Environment variables, standalone output, domains, and security headers.

How they differ

Trace SymbolsTrace Footprints
UnitSchematic symbol (pins)PCB footprint (pads)
File format.kicad_sym.kicad_mod
Organized byLibrary and categoryLibrary only (no categories)
SourcesTrace + CERN symbolsTrace + CERN footprints
Static indexdata/symbols_index.jsondata/footprints_index.json
Generation endpoint/api/v3/components/generate/symbol/api/v3/components/generate/footprint
Contribution accepts.kicad_sym (+ .kicad_mod, .SchDoc).kicad_mod only
Saved-items route/my-symbols/my-footprints
Both platforms write to the same Supabase table, public.generated_components, distinguished by a type column ("symbol" | "footprint"). There is no separate footprints database and no migration is required to run either site.

Tech stack

Next.js 16 (App Router) · React 19 · TypeScript · Tailwind CSS v4 · standalone output. Server Components + Client Components + API route handlers under src/app/api/.