Companion planting is real horticulture with real evidence behind it, and it is almost impossible to apply from a book. You are standing in front of a 200 × 100 cm box holding a tray of seedlings, and the question “does dill belong next to carrots?” has an answer — you just do not have it in your head.
Hochbeet puts that answer in the planner. You draw your bed, drag plants into it, and the app tells you which neighbours help each other and which ones you are about to regret.
Planning a bed
Beds are defined by real measurements and a shape — rectangle, L-shape, or freeform, where you draw the outline cell by cell. Plants are then dropped in at centimetre positions and rendered as circles at their actual spacing, so a single tomato visibly eats 60 cm of your bed and you cannot cheat the geometry. Placement is collision-checked: if two plants would overlap, the app refuses. Same species dropped nearby stack into a count instead.
Underneath sits a plant library of 21 species with spacing, sun and water needs, sowing depth, weeks to harvest, botanical family, expected yield, and care notes — plus a companion matrix drawn from Central European sources (Gertrud Franck’s Mischkulturen im Gemüsegarten, DGG, Sepp Brunner, Bioland guidance).
What it tells you
- Good and bad neighbours, computed by distance rather than grid cells, with the reason spelled out — not just “bad”, but why it is bad.
- Fix my bed, which iteratively swaps conflicting plants for compatible ones that score well against the same neighbours.
- Crop rotation warnings across seasons, so the same botanical family does not sit in the same spot year after year.
- A yield estimate and plant count for the current layout.
- A sun map across the bed, derived from the orientation you set during onboarding.
Four seasons, one bed
Each bed holds four independent layouts — spring, summer, autumn, winter — and a season view compares them side by side with transition advice: radish out, tomato in once the soil is warm; beans before spinach because of the nitrogen they leave behind. There is also an auto-plan wizard that generates a starting layout from your bed size, a goal (maximum yield, low maintenance, or family-friendly) and the plants you actually want to grow.
Around that sit a calendar for the jobs a bed generates and a harvest log to record what actually came out of it.
How it is built
React 18 and Vite, deliberately small: no state library, no component framework, styling
written inline against a single theme file. The interesting code is not the UI, it is
useBed — placement, collision checks, undo/redo, companion scoring and the auto-repair
pass all live there.
Storage is local first. Everything is kept in localStorage and the app is fully
usable without an account; signing in adds optional Firestore sync across devices. If
Firebase is not configured at all, the app degrades to local-only rather than breaking,
which is how a tool like this should behave.
Where it stands
A preview, and the least finished of my projects. The planner, seasons, conflict analysis, auto-plan, calendar and harvest log all work; the UI is German-only, and what it is really missing is a second year of my own use to find out which parts of it I actually reach for.