Gridfinity drawer builder
Fits a Gridfinity baseplate and bins to a drawer, cut to your printer's bed, and saves the whole set as one model.

A 500 × 400 mm drawer: the baseplate cut into six tiles for a 256 mm bed, with bins of several sizes and heights, some with compartments. 
The same drawer in the dark theme, with a baseplate tile in the 3D view: drag it to turn it round. 
Cells stretched to fill a small drawer exactly, and what's wrong flagged: a bin too big for the bed, another taller than the drawer.
About Gridfinity drawer builder
Fits a Gridfinity organizer to a drawer: enter the drawer’s inside size and your printer’s bed, and it lays out the 42 mm grid, fills what’s left with a border (or stretches the cells to fill the drawer), and cuts the baseplate into tiles the bed takes. Draw bins on the grid, with compartments and a height of your choosing, and it lists every part to print and how many.
Save to Thingport keeps the whole drawer as one model: an STL for each kind of tile and bin, named with how many of it to print, a picture of the layout, and a description with the parts table, the totals and where each tile goes.
The parts are drawn by the tool itself, to the Gridfinity sizes (42 mm cells, 7 mm height units, the standard foot and baseplate profile), as light open-bottom baseplates and plain bins with box dividers. Inspired by FitForge’s drawer builder; none of its code is used.
What it reaches
Nothing outside Thingport: it declares no hosts. It keeps the drawer you were working on in its own settings, and creates a model, or adds one to a collection you pick, only when you ask it to.
Changing it
Edit source/ and build:
node source/build.mjs # tool.js and tool.json, from geometry.js, plan.js, render.js, ui.js, icon.svg and tool.base.jsonnode source/test_geometry.mjs # every kind of part is a closed solidgeometry.js makes the meshes, plan.js the grid, tiles and parts list and the model’s description, render.js the
previews, and ui.js the window; tool.html is its markup and styles.