A local, browser-based irrigation planning app for laying out sprinklers on top of a yard plan, calibrating scale, sketching main and zone piping, reviewing coverage and application-rate overlays, and generating a practical parts list.
This project is built as a static HTML/CSS/JavaScript app with no backend and no build step.
- Import a yard image (
PNGorJPG) as the drawing background - Calibrate scale with a two-point reference measurement
- Optionally rectify photographed plans with a four-corner reference rectangle before scale calibration
- Place and edit sprinkler heads with:
- full-circle coverage
- arc coverage
- strip patterns
- Draw main and zone pipe runs
- Draw manual multiconductor control-wire runs
- Assign and manage irrigation zones
- Place valve boxes and suggested/explicit fittings
- Place controllers and track control cable runs to valve boxes
- Review overlap and irrigation analysis overlays:
- application rate
- zone catch-can depth
- full schedule depth
- target error
- Generate recommended sprinkler bodies/nozzles from the bundled irrigation database
- View a parts screen with bodies, nozzles, fittings, and pipe totals
- Save and load project JSON files
- Export the canvas as a PNG
- Restore work from local autosave
- Use undo/redo and a few practical keyboard shortcuts
This tool is aimed at residential sprinkler layout planning and review. It helps with geometry, spacing, zone grouping, nozzle recommendations, manual controller-to-valve-box wire planning, and high-level hydraulic guidance.
It does not currently do full hydraulic simulation, pressure-loss modeling, trench routing, controller programming, or cloud sync.
Because the app uses ES modules and loads local JSON data, run it from a local HTTP server instead of opening index.html directly from the filesystem.
python -m http.server 8000Then open:
http://localhost:8000
npx serve .Use the Live Server extension and open the project folder.
- Import a yard image in the Project panel.
- Calibrate the plan with a known measurement.
- Enter supply line size, pressure, and optionally a design flow cap.
- Place sprinkler heads and adjust radius, arc, strip geometry, labels, and zone assignment.
- Draw main and zone pipes.
- Add valve boxes, controllers, and manual multiconductor wire runs.
- Use the fittings palette for suggested or manual fittings.
- Review coverage and analysis overlays.
- Switch to the Parts screen to review bodies, nozzles, fittings, pipe totals, controllers, and control-wire totals.
- Save the layout as JSON or export a PNG snapshot.
Ctrl/Cmd + Z: UndoCtrl/Cmd + Y: RedoCtrl/Cmd + Shift + Z: RedoCtrl/Cmd + C: Copy selected sprinklerCtrl/Cmd + V: Paste sprinklerDelete/Backspace: Delete selected sprinkler, pipe, valve box, fitting, or selected pipe vertexEnter: Finish the active pipe draftEscape: Cancel fitting draft, pipe draft, or measurement workflow
.
|-- index.html
|-- styles.css
|-- sprinkler_data.json
|-- src/
| `-- main.js
|-- analysis/
|-- canvas/
|-- geometry/
|-- io/
|-- state/
|-- ui/
`-- tools/
src/: app bootstrap and top-level wiringcanvas/: drawing, hit testing, and interaction behavioranalysis/: nozzle recommendation, overlay analysis, and fitting suggestion logicgeometry/: math and formatting helpersstate/: app state and reducer/store logicui/: panel bindings and UI renderingio/: import/export and autosave helperstools/: standalone utility scripts such as nozzle recommendation reporting
sprinkler_data.json: bundled sprinkler/nozzle database used by the in-app analyzersprinkler-layout.json: current sample/project data file in this repo
The repo includes a reporting script that analyzes a saved layout and writes a markdown report:
node .\tools\recommend-nozzles.mjsIt reads sprinkler-layout.json and sprinkler_data.json, uses the same shared analyzer as the app, and updates zone-nozzle-analysis.md.
- Latest desktop Chrome
- Latest desktop Edge
- Latest desktop Firefox
Desktop is the intended target. Mobile/touch support is not the current focus.
- Hydraulic guidance is advisory only
- Background import currently supports image files, not PDF import
- There is no backend, user auth, or sync
- The app is optimized for local use and iterative layout work, not production estimating or stamped irrigation design
- Direct PDF import
- Explicit lawn-area modeling
- More sprinkler catalogs and parts databases
- Better hydraulic zone validation
- Additional export/report options
Add your preferred license here.