tscircuit
We are building world-class code-first tooling for creating PCBs using React. To do this we need to concretely establish the foundational concepts of a React-based circuit-rendering system, most importantly enabling a community to begin creating designs without worrying about their code becoming obsolete.
We believe that by making circuits into code and using React's robust pluggable architecture, developers will be able to create novel solutions to circuit layout, error analysis, and pre-manufacture debugging.
There are 3 core fundamental tools that must be in place:
Tscircuit will be critized for lacking visual tools that have traditional been used to constrain and adjust circuits. We believe that these visual tools are a "local minimum", and code will greatly exceed their capabilities, to demonstrate this we need to demonstrate automatic layout tooling so that developers can copy and build on the foundation.
To demonstrate layout capabilities we should have an implementation of automatic layout tooling that covers:
tscircuit devcreate-tscircuit-component, create-tscircuit-library and create-circuitMany users of tscircuit will be web developers with little/no experience with traditional circuit design tools. We believe anyone can learn to build circuits with code-based tools, and these tools will excel in teaching people how to build circuits. To enable this community to adopt tscircuit as their tool, and to give expert circuit designers more confidence in their designs, we want to support static or type analysis that surfaces errors if you were to have a PCB assembled in real life.
Some examples of errors we should surface:
In addition to errors, we should enable warnings to be presented in the rendering tooling:
Just like React, tscircuit needs a massive catalog of components to make it the fastest way to build components.
Our major goals to build a massive catalog:
TSCircuit is the first system that can enable transparent switching of equivalent components for automatic BOM generation and live swapping.
For example, if you specify you'd like a <resistor footprint="0402" tol="0-5%" />,
we can automatically find component from your preferred vendor(s) at the lowest
cost.
You can even swap much larger subcomponents, for example, a <MotorController />
may be implemented with several alternatives specified, this allows real time
BOM analysis and swapping.
Replacing the antiquated visual PCB design tools is critical, but the long-term innovation of the project and preventing forking and incompatibilities is a major goal.
React lost a lot of it's community by not acting in a community-first way, tscircuit is community-first. Our mission is to create a rich ecosystem enabling people to build PCBs.
Before forking or creating alternatives to tscircuit, consider that we are up against goliaths in the visual-pcb design space. Let's work together to create a strong ecosystem with community-driven innovation.