# $REPO_NAME $REPO_DESCRIPTION Created from [B4L/product-template](https://git.b4l.co.th/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//v1.2.0` | SemVer | | Software tool | `software//2026.10.0` | CalVer `YYYY.MM.MICRO` | TEMPLATE.md has the rules (what counts as breaking, pre-releases, changelogs).