Skip to main content
Contributing

Overview of tscircuit projects

tscircuit is split across focused repositories. Use this page to find the right place to report an issue, open a pull request, or start a bounty attempt.

Start here

RepoWhat belongs there
tscircuit/tscircuitMain user-facing package for writing electronics with TypeScript and React. Start here for examples and high-level user experience issues.
tscircuit/coreCore compiler that turns React components into Circuit JSON. Use this for component behavior, prop handling, and render-to-data bugs.
tscircuit/cliLocal development server and command-line workflow, including project creation, preview, build, import, export, and auth commands.
tscircuit/docsDocumentation, tutorials, reference pages, and contributor guides.
tscircuit/tscircuit.comMain website, playground, registry UI, and online development environment.

Circuit JSON and validation

RepoWhat belongs there
tscircuit/circuit-jsonSchema and types for the low-level circuit representation used across the ecosystem.
tscircuit/propsShared prop definitions for supported tscircuit components.
tscircuit/checksDesign-rule and validity checks for Circuit JSON.
tscircuit/evalEvaluates tscircuit code to Circuit JSON in browsers, Node.js, or web workers.
tscircuit/runframeRuns tscircuit code in a web worker and powers preview experiences.

Viewers and renderers

RepoWhat belongs there
tscircuit/circuit-to-svgRenders Circuit JSON to schematic, PCB, and assembly SVGs.
tscircuit/circuit-to-canvasDraws Circuit JSON to Canvas-compatible targets.
tscircuit/pcb-viewerReact PCB viewer.
tscircuit/schematic-viewerReact schematic viewer.
tscircuit/3d-viewer3D viewer for boards created with tscircuit.
tscircuit/svg.tscircuit.comService for rendering encoded tscircuit snippets into SVGs for docs and embeds.

Importers, exporters, and manufacturing formats

RepoWhat belongs there
tscircuit/circuit-json-to-gerberExports Circuit JSON to Gerber.
tscircuit/circuit-json-to-kicadExports Circuit JSON to KiCad.
tscircuit/circuit-json-to-stepExports Circuit JSON to STEP.
tscircuit/circuit-json-to-gltfExports Circuit JSON to GLTF/GLB.
tscircuit/circuit-json-to-tscircuitConverts Circuit JSON back into tscircuit code.
tscircuit/kicad-to-circuit-jsonImports KiCad projects into Circuit JSON.
tscircuit/easyeda-converterConverts EasyEDA/JLCPCB footprint data into tscircuit-compatible formats.
tscircuit/footprinterFootprint DSL and micro-builder designed to be friendly to AI-generated footprints.
tscircuit/jscad-electronicsJSCAD functions for electronics geometry.

Routing and layout

RepoWhat belongs there
tscircuit/tscircuit-autorouterMain MIT-licensed PCB autorouter.
tscircuit/schematic-trace-solverSchematic trace routing and net-label placement.
tscircuit/calculate-packingThe pack layout algorithm.
tscircuit/copper-pour-solverCopper pour polygon solver.
tscircuit/hypergraph, tscircuit/tiny-hypergraph, and tscircuit/pcb-poly-hyper-graphGraph utilities used by routing and layout tools.

Parts, packages, and examples

RepoWhat belongs there
tscircuit/commonCommunity-contributed components.
tscircuit/jlcsearchFinds JLCPCB parts matching design constraints.
tscircuit/parts-enginePlatform parts engine.
tscircuit/sparkfun-boardsSparkFun boards recreated in tscircuit.
tscircuit/example-custom-autorouterExample repo for using a custom autorouter.

How to choose a repository

  1. If your change affects the code users write, start with tscircuit, core, or props.
  2. If your change affects generated data, start with circuit-json, checks, or eval.
  3. If your change affects visual output, start with a viewer or renderer repo.
  4. If your change affects manufacturing/export files, start with a converter repo.
  5. If your change affects routing or layout quality, start with the autorouter, solver, or hypergraph repos.
  6. If you are unsure, open a small issue in the closest repo and include a minimal reproduction.

Pull request checklist

  • Link the issue or bounty in the PR body.
  • Keep the change scoped to one repo and one behavior when possible.
  • Add or update tests for code changes.
  • Update docs or examples when user-facing behavior changes.
  • Include the exact local commands you ran to verify the change.