Development so farHow it got here
Sixteen days from a one-page brief to a board ready to order. The reasoning behind every decision is written down in the repository's decision log; this is the short version.
The brief, and a clock-face generator
White LEDs only, one individually placed LED per second, minute and hour, each turned to its true radial angle: 6 degrees apart on the minute and second rings, 30 degrees on the hour ring. A script places the rings from a few parameters, so the tightest layout that still routes can be found by search instead of by hand.
Simulator first, firmware second
The two-button interface (hold left to choose a mode, then left/right to move, wait to enter) was designed and built in the browser simulator before any hardware existed. The logic was then ported to portable C for the AVR and checked against the simulator frame for frame: 20 scenarios match exactly, with 71 unit checks and 197 hardware-layer checks passing. The AVR build is 31.7 KB of the chip's 128 KB flash.
A power system built from in-stock parts
A solar cell, a BQ25570 harvester and two small LiPo pouches. The harvester's three resistor ladders (battery overvoltage, battery-good, 3.3 V output) were recomputed from the datasheet equations and re-picked from values JLCPCB actually has in stock.
Hand placement, scripted routing
Evan placed the parts by hand in KiCad. Scripts then did the rest: a polar router for the LED rings, a grid router for the remainder, a ground plane, and pad-by-pad clean-up. The schematic is generated from a script and compared to the routed board connection by connection. First JLCPCB quote for five assembled boards: $308.63.
Cleaner copper
A pass that redrew traces in clean 45-degree moves cut the number of odd-angle pieces from 790 to 53, and moved traces out from under the microcontroller and the power chip.
The pre-order review found two things
Every pin of the harvester was checked against its datasheet. The 3.3 V divider was outside the datasheet's recommended range, so it was changed (output 3.309 V). Then the review of the battery plug found it was wired backwards compared with the battery maker's own wiring. Pin 1 had been battery-plus; theirs is ground. It was swapped on the board and schematic, and plus/minus marks were added to the silkscreen. This is exactly the kind of mistake that would have killed the first power-up.
Final checks
Board rule check: 0 errors, 0 unconnected nets. JLCPCB's manufacturability checker and its assembly checker (with the parts list and placement file loaded) flag only quirks of its part models, not copper problems. Final quote: about $312 for five assembled boards, plus shipping. Also written for the first power-up: a test plan that needs only a multimeter.

