A web-based tool for generating customized 3D-printable mounting brackets for devices in standard 19-inch server racks.
Use the app directly in your browser (no installation required):
https://leprachuan.github.io/rack-mount-generator/
The app runs entirely in your browser - all 3D rendering and STL export happens client-side!
β¨ Real-Time 3D Preview
- Interactive Three.js visualization
- Rotate, pan, and zoom to inspect your design
- Device shown as semi-transparent overlay
π§ Customizable Parameters
- Device dimensions (width, height, depth)
- Tolerance for easy insertion/removal
- Wall thickness and structural options
- Left or right rack ear positioning
π Structural Components
- Half-width faceplate (225mm) - fits standard printer beds
- Rack ear with M6 mounting holes (3 per U)
- Joining flange with M3 holes to connect two brackets
- Support shelf with triangular gussets
- Blank panel mode for solid faceplates
π¦ Instant STL Export
- What-you-see-is-what-you-get export
- Binary STL format for efficiency
- Direct browser download - no server processing
Want to run the app locally or contribute? Follow these steps:
- Python 3.11 or higher
- uv package manager (recommended) or pip
# Clone the repository
git clone https://github.com/leprachuan/rack-mount-generator.git
cd rack-mount-generator
# Using uv (recommended)
uv sync
uv run python app.py
# OR using pip
pip install -r requirements.txt
python app.pyNavigate to: http://localhost:5001
Note: The app uses port 5001 because port 5000 is often blocked on macOS by AirPlay/ControlCenter.
| Field | Description | Example |
|---|---|---|
| Width | Horizontal width of your device | 150mm |
| Height | Vertical height (44mm = 1U) | 44mm |
| Depth | How far device extends into rack | 200mm |
| Setting | Description | Default |
|---|---|---|
| Tolerance | Gap around device for easy insertion | 2mm |
| Wall Thickness | Faceplate material thickness | 10mm |
| Shelf Thickness | Support shelf thickness | 5mm |
| Flange Thickness | Joining flange width | 5mm |
| Gusset Size | Triangular support size | 15mm |
- Add Support Shelf: Creates a shelf below the device opening
- Add Rack Holes: Adds M6 mounting holes to the rack ear
- Ear Side: Position rack ear on left or right
- Blank Panel: Creates solid faceplate (no cutout)
- Click "Generate STL Files"
- Preview updates in real-time
- STL file downloads automatically
- Open in your slicer software (PrusaSlicer, Cura, etc.)
| Material | Best For | Notes |
|---|---|---|
| PLA | Prototypes, light loads | Easy to print, may warp in heat |
| PETG | General use | Good strength, slight flexibility |
| ABS | High stress | Strongest, requires enclosure |
- Layer Height: 0.2mm (standard) or 0.15mm (detailed)
- Infill: 20-30% for normal use, 50%+ for heavy devices
- Walls: 3-4 perimeters recommended
- Supports: Not needed - designed to print flat
Print with the faceplate flat on the bed (front face down).
- Print the bracket with your chosen settings
- Insert M6 cage nuts or use clip nuts on rack rails
- Slide device into the bracket opening
- Secure bracket to rack with M6 bolts
- Print left bracket (ear on left side)
- Print right bracket (ear on right side)
- Align the joining flanges together
- Insert M3 screws through horizontal holes
- Secure with M3 nuts
- Mount assembled full-width bracket to rack
- Standard: EIA-310-D
- Rail Spacing: 450mm (inner width)
- Unit Height: 44.45mm (1U)
- Mounting Holes: M6 (6.35mm diameter)
- Faceplate Width: 225mm (half-width design)
- Rack Ear Width: 15.875mm (5/8")
- Joining Flange Depth: 50.8mm (2")
- M3 Joining Holes: 3.2mm diameter
- Rack Ear: 3 holes per U at standard positions (6.35mm, 22.225mm, 38.1mm from U bottom)
- Joining Flange: 2 rows of holes (near front and back of flange)
| Material | Best For | Notes |
|---|---|---|
| PLA | Prototypes, light loads | Easy to print, 60Β°C limit |
| PETG | General use | Good strength, slight flexibility |
| ABS | High stress | Strongest, requires enclosure |
- Increase tolerance (try 3-4mm)
- Check for warping during print
- Sand edges if needed
- Increase wall thickness
- Use higher infill percentage
- Switch to PETG or ABS material
- Add support shelf option
- Verify your rack follows EIA-310-D standard
- Some racks use #10-32 instead of M6 - holes should still work
- Refresh the browser page
- Check browser console for JavaScript errors
- Ensure all input values are valid numbers
rack_mount_generator/
βββ index.html # Web interface with Three.js preview & STL export
βββ app.py # Flask server (serves static files)
βββ stl_generator.py # Legacy Python STL generator (unused)
βββ requirements.txt # Python dependencies
βββ pyproject.toml # uv/pip project configuration
βββ README.md # This file
βββ ARCHITECTURE.md # Technical architecture details
βββ DEVELOPMENT.md # Development guide
βββ AGENTS.md # AI agent instructions
βββ CLAUDE.md # Claude-specific implementation notes
See DEVELOPMENT.md for development setup and contribution guidelines.
See ARCHITECTURE.md for technical architecture details.
We welcome contributions! Please see CONTRIBUTING.md for guidelines on:
- How to report bugs
- How to suggest features
- Pull request process
- Code style expectations
For branch protection and release information, see BRANCH_PROTECTION.md.
- ARCHITECTURE.md - System architecture and design
- DEVELOPMENT.md - Development setup and code structure
- AGENTS.md - AI agent instructions for code generation
- CLAUDE.md - Claude AI specific implementation details
MIT License - See LICENSE file for details.
- Three.js for 3D visualization and STL export
- Flask for the web server
- The 3D printing community for dimension standards
Version: 2.0.0
Last Updated: January 2025
Status: Production Ready - Client-side STL Export