The plant catalog backs every planting: name, category, mature spacing (cm — drives derived plop counts), display color, emoji icon. Built-in plants (owner_id NULL) ship seeded and read-only; users create their own or clone built-ins to customize. Users see built-ins + their own rows.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of epic #20 · Design: DESIGN.md
Context
The plant catalog backs every planting: name, category, mature spacing (cm — drives derived plop counts), display color, emoji icon. Built-in plants (
owner_id NULL) ship seeded and read-only; users create their own or clone built-ins to customize. Users see built-ins + their own rows.Scope
0002_seed_plants.sql: ~30 built-ins covering common garden staples with sensible spacing/colors/emoji — suggested set: garlic 🧄15cm, onion 🧅10, basil 🌿25, cilantro 🌿10, dill 🌿15, parsley 🌿15, oregano 🌿25, thyme 🌿20, rosemary 🌿45, sage 🌿45, mint 🌿30, bush bean 🫘 10, pole bean 🫘15, pea 🫛 8, tomato 🍅60, pepper 🌶️45, cucumber 🥒30, zucchini 🥒60, winter squash 🎃90, carrot 🥕 8, radish 🌱 5, beet 🌱10, lettuce 🥬20, spinach 🥬10, kale 🥬45, broccoli 🥦45, cabbage 🥬45, potato 🥔30, corn 🌽25, strawberry 🍓30, sunflower 🌻45, marigold 🌼25. Adjust freely; categories per the DESIGN.md enum.internal/store/plants.go+internal/service/plants.go(conventions from #7): List (built-ins + actor's own), Create, Update/Delete own rows only — built-ins returnErrForbidden. Validation: name non-empty,spacing_cm > 0, hex color, category in enum, icon non-empty (emoji as plain string).GET,POST /api/v1/plants,PATCH,DELETE /api/v1/plants/:id(version guard as usual). "Clone" is client-side: POST a copy — no special endpoint.Out of scope
Key files & patterns
DESIGN.md§ Domain model (plants). Migration runner from #1.Dependencies
Blocked by #7 (service conventions; schema from #1).
Acceptance criteria
GET /plantsreturns the seeded set; re-running migrations doesn't duplicate them.go test ./internal/service/...green.