Skip to the content
PCBKitNew board
2 layers36 × 37 mmNewProject, the printed circuit board in 3D

A simple one-layer PCB "drawer": read a KiCad board, extract the copper traces, and turn them into travel-optimized G-code you can plot on a pen-plotter / small CNC driven by a microcontroller (GRBL — an Arduino running…

Size
36 × 37 mm
Copper layers
2
Thickness
1.6 mm
Parts
11
Nets
25
Pads
68
Tracks, vias
94, 0
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
23 Jul 2026
Updated
18 Sep 2026

Overview

NewProject is an open-source printed circuit board by moi-script, from the moi-script/pcb_ui repository on GitHub. It is a 2-layer board of 36 × 37 mm with 11 parts on 25 nets, routed with 94 tracks and 0 vias.

Its parts include 3 capacitors, 3 ICs, 2 switches, 1 resistor and 1 diode.

README

serverside/README.md

serverside — the TraceWorks backend

A simple one-layer PCB "drawer": read a KiCad board, extract the copper traces, and turn them into travel-optimized G-code you can plot on a pen-plotter / small CNC driven by a microcontroller (GRBL — an Arduino running grbl_servo_z).

Aimed at hobby / student mini projects, not professional copper milling.

Pipeline

text
labExam.kicad_pcb
  → pcb_read.py          parse (custom s-expression parser; supports KiCad 10)
  → pcb_draw.py          board preview by copper layer  (labExam_wiring.png)
  → pcb_gcode.py         travel-optimized G-code         (labExam.gcode)
  → pcb_gcode_preview.py verify toolpath, no hardware     (labExam_toolpath.png)
  → pcb_send.py          stream to GRBL over USB serial (--check to validate)
  → Arduino running GRBL 1.1, over USB

pcb_send.py is the CLI streamer and is not what the web app uses. The API owns the serial port itself:

text
grbl/        the GRBL 1.1 stack: protocol codec, port enumeration, the
             flow-controlled streamer thread, machine state, travel limits,
             and a simulator good enough to develop against
machine.py   the one process-wide Session that owns the port
job.py       streams one board's G-code, with progress, pause, stop

Run

bash
python main.py                # run the whole pipeline, step by step
python main.py --skip-preview # ... without the matplotlib image steps

Each stage also runs on its own — see DOCS.md for full documentation, status, and roadmap, and HARDWARE.md for the plotter build (parts list, flashing steps, starter config).

Web API + database (server side of the UI)

server.py is a FastAPI app that wraps this pipeline for the web UI in ../userpage, and drives the machine. It parses uploaded boards, generates G-code, and stores accounts and routed boards in MongoDB (mongodb://localhost:27017, database traceworks).

bash
pip install -r requirements.txt
uvicorn server:app --reload --port 8000                  # needs a local MongoDB

TRACEWORKS_SIM=1 uvicorn server:app --reload --port 8000  # ...and no hardware

Board and account endpoints: POST /route (upload a .kicad_pcb → parsed + routed board), POST /trace (an image → a pen path), /auth/signup · /auth/login, /boards/{email}, /board/{id}.

Machine endpoints — the backend runs on the same PC as the browser, so it, not the tab, owns the COM port:

EndpointWhat it does
GET /machine/portsserial ports with chip names; suggested only when exactly one candidate exists
POST /machine/connect{port, baud, email?} → the firmware banner
POST /machine/disconnect
GET /machine/statethe machine snapshot: state, mpos, wpos, job progress
GET /machine/last?email= → the last port and baud used, or null
WS /machine/wsthe same snapshot pushed at up to 10 Hz, plus console lines
POST /machine/jog{axis, distance, feed}; refused with the axis named if it would leave the envelope
POST /machine/jog/cancel, /home, /unlock
POST /machine/zero{axes} — set work zero on X, Y, Z or any combination
POST /machine/command{line} — one raw line; realtime characters are routed as realtime
POST /machine/estoprealtime soft reset; returns instantly, never waits on the link
POST /machine/run{board_id, check} — stream a stored board; check brackets it with $C
POST /machine/pause, /resume, /stop

See server.py for the full list and db.py for the Mongo connection. The reusable entry point is pcb_read.extract_wiring(text).

Requirements

Python 3 and matplotlib for the CLI pipeline. The web API also needs fastapi, uvicorn, python-multipart, and pymongo (all in requirements.txt), plus a running MongoDB. (kiutils is intentionally not used — it does not support the KiCad 10 file format.)

See ../RUNNING.md for running this together with the frontend in ../userpage.

Parts

11
QtyValueFootprintReferences
3100nfCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC1, C2, C3
1330Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_HorizontalR1
174LS00_AND_1Package_DIP:DIP-14_W7.62mmU1
174LS04_NOT_1Package_DIP:DIP-14_W7.62mmU3
174LS32_OR_1Package_DIP:DIP-14_W7.62mmU2
1Barrel_JackConnector_BarrelJack:BarrelJack_HorizontalJ1
1LEDLED_THT:LED_D5.0mmD1
1SW_DIP_x04Button_Switch_THT:SW_E-Switch_EG1224_SPDT_AngledSW2
1SW_SPSTButton_Switch_THT:SW_CK_JS202011AQN_DPDT_AngledSW1

Questions

How big is the NewProject PCB?

It measures 36 × 37 mm and has 2 copper layers, 1.6 mm thick.

What parts does the NewProject use?

11 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the NewProject KiCad files?

From the moi-script/pcb_ui repository on GitHub, at the commit this page was made from: the board is serverside/newProject.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the NewProject design in my own project?

Its repository states no licence, so its author keeps all rights: ask moi-script before reusing the design.

More from moi-script/pcb_ui

2
  • 2 layers113.5 × 41.5 mmLabExam, the printed circuit board in 3D

    LabExam

    moi-script/pcb_ui

    A simple one-layer PCB "drawer": read a KiCad board, extract the copper traces, and turn them into travel-optimized G-code you can plot on a pen-plotter / small CNC driven by a microcontroller (GRBL — an Arduino running…

    28 parts
  • 2 layers33 × 85 mmLab3, the printed circuit board in 3D

    Lab3

    moi-script/pcb_ui

    A simple one-layer PCB "drawer": read a KiCad board, extract the copper traces, and turn them into travel-optimized G-code you can plot on a pen-plotter / small CNC driven by a microcontroller (GRBL — an Arduino running…

    19 parts

Similar boards

  • 2 layers60 × 30 mmController, the printed circuit board in 3D

    Controller

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    11 parts3kApache-2.0
  • 2 layers103 × 30.5 mmTS Front Endcap, the printed circuit board in 3D

    TS Front Endcap

    EEVengers/ThunderScope

    ThunderScope GitHub Repo

    11 parts1.3kMIT
  • 2 layers26 × 30 mmExpansion Card, the printed circuit board in 3D

    Expansion Card

    FrameworkComputer/ExpansionCards

    Reference designs and documentation to create Expansion Cards for the Framework Laptop

    11 parts1.1kCC-BY-4.0
  • 2 layers53.9 × 23.2 mmBuffer, the printed circuit board in 3D

    Buffer

    hoglet67/RGBtoHDMI

    Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI

    11 parts1kGPL-3.0
  • 2 layers10 × 20 mm2 connector Sensor Board, the printed circuit board in 3D

    2 connector Sensor Board

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    11 parts915
  • 2 layersFet module, the printed circuit board in 3D

    Fet module

    ByteWelder/Decktility

    A handheld PC

    11 parts855CC-BY-SA-4.0
  • 2 layers47 × 33 mmSevensegment led display module, the printed circuit board in 3D

    Sevensegment led display module

    tardate/LittleArduinoProjects

    a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!

    11 parts803MIT
  • 2 layers42.5 × 36.8 mmDevboard, the printed circuit board in 3D

    Devboard

    basilfx/TRADFRI-Hacking

    Hacking IKEA TRÅDFRI products, such as light bulbs, window blinds and other accessories.

    11 parts743CC-BY-4.0