A fully configurable web-based Gridfinity generator for creating customizable storage bins and baseplates. Generate STL files for 3D printing directly in your browser.
- Dimensions: Width, depth, and height in grid units (0.5-8 units)
- Wall Settings: Customizable wall and floor thickness
- Magnets: Optional magnet holes with configurable diameter and depth
- Screw Holes: Optional screw mounting holes
- Finger Slide: Easy-access cutout on any side
- Labels: Tab for label placement
- Dividers: Internal compartment dividers (X and Y)
- Lip Styles: None, standard, or reduced stacking lip
- Dimensions: Width and depth in grid units (1-10 units)
- Styles: Default, magnet holes, weighted (hollow), or screw holes
- Lid Options: None, flat lid, or half-pitch grid
- Rounded Corners: Add a corner radius (0-5mm) to make printing easier
- Smoother Edges: Reduces sharp corners that can cause printing issues
- Configurable Segments: Control the smoothness of rounded corners
- Frontend: React + TypeScript + Vite
- Styling: Tailwind CSS
- 3D Preview: Three.js + react-three-fiber
- Backend: Node.js + Express
- STL Generation: OpenSCAD (CLI)
- Deployment: Railway / Docker
- Node.js 18+
- OpenSCAD installed on your system
- npm or yarn
- Clone the repository:
git clone https://github.com/gridfinity-generator/gridfinity-generator.git
cd gridfinity-generator- Install dependencies:
npm install- Start the development servers:
npm run dev- Open http://localhost:3000 in your browser
Build and run with Docker:
docker build -t gridfinity-generator -f docker/Dockerfile .
docker run -p 3001:3001 gridfinity-generator- Fork this repository
- Connect your Railway account to GitHub
- Create a new project from the repository
- Railway will automatically detect the configuration and deploy
POST /api/generate
Content-Type: application/json
{
"type": "box" | "baseplate",
"config": { ... }
}
GET /api/files/:filename
GET /api/health
| Parameter | Type | Range | Default |
|---|---|---|---|
| width | number | 0.5-8 units | 1 |
| depth | number | 0.5-8 units | 1 |
| height | number | 1-10 units | 3 |
| wallThickness | number | 0.8-2.4 mm | 0.95 |
| floorThickness | number | 0.7-2.0 mm | 0.7 |
| magnetEnabled | boolean | - | true |
| magnetDiameter | number | 3-10 mm | 6 |
| magnetDepth | number | 1-5 mm | 2 |
| cornerRadius | number | 0-5 mm | 0 |
| Parameter | Type | Range | Default |
|---|---|---|---|
| width | number | 1-10 units | 3 |
| depth | number | 1-10 units | 3 |
| style | string | default/magnet/weighted/screw | default |
| lidOption | string | none/flat/halfPitch | none |
| cornerRadius | number | 0-5 mm | 0 |
| cornerSegments | number | 8-64 | 32 |
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
Based on the excellent work of gridfinity_extended_openscad by ostat.
- Gridfinity by Zack Freedman
- gridfinity_extended_openscad by ostat
- OpenSCAD for parametric 3D modeling
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request