Template
59f3df278bf567c17d5528793811cae15b064f7e
A repository with .gitea/scripts/jlcpcb-files.py (harNES) gets <board>-<tag>-jlcpcb-bom.csv and -jlcpcb-cpl.csv (rotations corrected per LCSC part) in release/: the script runs with --force on a copy of hardware/ without the committed jlcpcb/ folders, so nothing stale is taken. When it refuses a board (DRC, missing correction), release/README.md and a workflow warning say why; the generic -cpl.csv then is the only placement file.
$REPO_NAME
$REPO_DESCRIPTION
Created from B4L/product-template.
TEMPLATE.md explains the layout, the rules and proplan.toml.
| Folder | What goes there |
|---|---|
release/ |
the latest stage's files: Gerbers, BOM, pick and place, PDFs, renders and documentation; written by CI at every stage tag, never by hand |
assets/ |
the product image (assets/product.png, shown by proplan), renders |
hardware/$REPO_NAME/ |
the KiCad project of the board |
hardware/lib/ |
symbols, footprints and 3D models shared by the boards |
firmware/ |
MCU code, one folder per target; firmware/lib/ for shared drivers |
external/ |
third-party code as git submodules |
software/ |
host tools and apps |
mech/ |
FreeCAD sources and STEP exports |
sim/ |
LTspice/ngspice models, calculation scripts and notebooks |
test/ |
bench results per prototype stage (test/v0.1/) |
docs/ |
documentation; docs/datasheets/ for vendor PDFs, docs/tex/ for LaTeX |
Prototype stages
Each prototype is a git tag (v0.1, v0.2, ...). For the tag, CI builds the
Gerbers and drill files, BOM, pick and place, schematic and PCB PDFs, 3D renders
and the documentation as PDF, attaches them to the tag's release and puts them
into release/, which always holds the newest stage. CHANGELOG.md says what
each stage changes. In proplan the prototype stage links the tag.
Versioning
| What | Tag | Scheme |
|---|---|---|
| Prototype stage | v0.1, v0.2 |
the next stage takes the next number |
| Firmware target | firmware/<target>/v1.2.0 |
SemVer |
| Software tool | software/<tool>/2026.10.0 |
CalVer YYYY.MM.MICRO |
TEMPLATE.md has the rules (what counts as breaking, pre-releases, changelogs).
Languages
Python
100%