Convert images and SVGs to sand table formats — clean paths, no scanlines.
SandPath takes SVG files and raster images (JPG, PNG, WebP, BMP, GIF, TIFF)
and converts them to .thr (Theta-Rho) or .gcode files for kinetic sand
tables like Oasis Mini, Sisyphus, and ZenXY.
For SVGs: traces the actual vector paths for clean, continuous lines — unlike raster/image importers which produce ugly horizontal scanlines.
For images: automatically traces edges, shapes, or line art into vector paths using configurable edge detection, thresholding, or centerline extraction — then converts those paths to sand table format.
| Format | Pipeline |
|---|---|
| SVG | Direct → THR/GCode |
| JPG | Trace → SVG → THR/GCode |
| PNG | Trace → SVG → THR/GCode |
| WebP | Trace → SVG → THR/GCode |
| BMP | Trace → SVG → THR/GCode |
| GIF | Trace → SVG → THR/GCode |
| TIFF | Trace → SVG → THR/GCode |
| Device | Shape | Output |
|---|---|---|
| Oasis Mini | Circular | .thr |
| Oasis One | Circular | .thr |
| Sisyphus Mini | Circular | .thr |
| Sisyphus Coffee Table | Circular | .thr |
| Sisyphus End Table | Circular | .thr |
| ZenXY (V1E) | Rectangular | .gcode |
| Custom Circular | Circular | .thr |
| Custom Rectangular | Rectangular | .gcode |
# Backend
cd backend && python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --reload --port 8000
# Frontend (new terminal)
cd frontend && npm install && npm run devSee SETUP.md for:
- Local development
- Production deployment
- DNS & HTTPS
- Ad integration (Google AdSense)
- Donations (Buy Me a Coffee)
- Logging & monitoring
- Rate limiting & security