Garden planner
Pick a growing system, add crops, get compatibility findings. Works for soil beds and hydroponic systems.
Your roster
Compatibility check
Combined feed recommendation
What else fits
What this does
Pick a growing system (deep water culture, NFT, vertical, drip, media bed, wicking, or soil bed), add the crops you want to grow, and the planner checks whether they'll get along in a shared setup.
Some combinations are physical impossibilities: a tomato in NFT just doesn't fit. Others are chemical conflicts: lettuce wants EC under 1.4 mS/cm while spinach wants EC above 1.8 , no single reservoir target satisfies both. Many are subtler: two crops that both heavily uptake potassium will starve each other even when "EC is right."
Soil bed vs hydroponic system
The chemistry rules don't fire for soil beds. Soil acts as a buffer; pH and EC don't need to be tracked daily. What still matters: light, temperature, root competition, and allelopathy. A walnut tree's juglone is the textbook example outdoors; in vegetable gardens, the practical case is tomato root exudates that can mildly inhibit some companion plants.
In hydroponic mode the planner adds checks on EC overlap, transpiration load on the reservoir, and harvest-cycle mismatch (a 45-day lettuce in the same reservoir as a 90-day tomato means the reservoir's nutrient profile shifts under the lettuce's feet halfway through its life).
What the open rules check
These fire instantly as you edit:
-
System intersection. If you pick crops with no overlapping growing-system support, the tool flags it as an error. Pick a tomato and a lettuce together with no system selected: the tool tells you they only share two compatible systems (drip and media bed) and that you'll need a substrate-based setup.
-
EC range overlap (hydro only). Pairwise check across the roster. Worst case: ranges don't overlap at all, which is an error. Narrow overlap is a warning to target the middle and accept some compromise.
-
pH range overlap. Most edibles want 5.5-6.5, so this rarely fires, but it catches the few outliers.
-
Temperature overlap. Lettuce and tomato is the classic case: lettuce wants 13-22°C, tomato wants 18-28°C. The 4°C overlap from 18-22 is workable but narrow, and the planner warns about it.
-
Light requirement conflict. If a crop is light-strict (tomato, pepper) and demands a much higher DLI than the rest of the roster, the planner flags it. You'll either underlight the strict crop or scorch the others.
-
Root mass vs system capacity. NFT channels and vertical towers fail mechanically with heavy-root crops; the planner flags this when totals exceed typical capacity.
-
Allelopathy. Crops with notable root exudates (tomato, mint) get an info note that they may affect neighbors in a shared reservoir or bed.
-
Nutrient hog conflict. If two crops both heavily uptake the same nutrient (e.g., both potassium hogs), the planner warns about deficiency symptoms in whichever is the smaller or slower crop, even at "correct" EC.
-
Transpiration overload (hydro only). High-transpiration crops shrink the reservoir fast; the planner warns when you have multiple very-heavy transpirers.
-
Cycle length mismatch (hydro only). When one crop's harvest cycle is more than twice the length of another's, they end up wanting different nutrient profiles at the same time.
The recommender is different
The compatibility checks run client-side; you can see the logic if you view source. The recommender that suggests additions to your roster is server-side. That's where the scoring weights, complementarity preferences, and the criteria for harvest-staggering bonuses live. Those don't ship to the browser, so they can't be copied by a competitor scraping the page.
Functionally: click "suggest compatible crops" and the planner sends your current roster + system type to the server. The server scores every crop in the database against what you have, applies disqualifiers (it won't suggest anything that would trigger an error finding), and returns the top handful with brief reasons.
You can click "Add" on any suggestion to drop it into your roster. The compatibility check re-runs immediately.
A few practical things
Soil mode is more forgiving than hydro because soil buffers everything. A tomato and a lettuce in a raised bed coexist fine; in the same DWC reservoir they don't. Most companion-planting tradition was developed for soil and translates poorly to hydroponics.
The planner stores your roster in browser localStorage, so refreshing the page doesn't lose your work. It's per-browser; not synced across devices.
The crop database covers over 200 species across leafy greens, herbs, roots, and fruiting crops. The schema and validation layer enforce consistent fields for every entry.