Time to give the board a body. Export the PCB from KiCad into your CAD platform - Onshape here, and this tutorial series is the fastest way in:
#Block out the case
-
Bring the PCB export into Onshape, plus any models you need - the battery headers came from 3D ContentCentral.
-
Expect experimentation: revolve looked bad and was hard to use here, and the battery went through several placements before vertical won.
-
Create a sketch (upper-left sketch button) and draw the shapes that include your tolerances and shell size:



#Iterate the board and the case together
-
The case revealed board problems: the vibration motor moved to the back and the screen got raised - from

to

-
The headers overlapped the buzzer, so the buzzer moved to the middle of the board - the gap between the LCD and the headers leaves just enough space:

#Finish the shell
-
The back half gets 3D-printed standoffs and large fillets to round the edges; the top half gets tolerance between the plate and the case:

-
Cut holes for the battery and USB-C. The measured USB-C was about 7 × 13 mm; these cutouts are 12.5 × 7.5 mm and work but are tight - add ~1 mm of margin, or test values on your own printer. The small bridging here prints fine:


-
Confirm nothing overlaps with the section view tool:

-
Upload all the case files to your GitHub repo.
Don't follow this page 1:1 - this was one person's process, and yours will differ greatly. For inspiration, poke through the Onshape document and its feature tree to see every iteration. A firmware page (flashing the board with Arduino IDE) is coming next.