juliaandClaude Sonnet 4.6 78c23557da feat: fruit search by name/synonym and type filter (story #06)
Backend: List repo query gains name (ILIKE with wildcard escaping on
name + synonym LEFT JOIN, SELECT DISTINCT) and types (ANY cast) params;
handler parses ?name= and ?type=, resolves combined-type aliases from
domain.FruitTypeAliases, validates plain types against validFruitTypes
to prevent Postgres enum cast errors. ORDER BY f.name, f.id for stable
pagination.

Frontend: listFruits gains optional {name, type} params; fruitStore adds
searchName/searchType state and setSearch action (resets offset, refetches);
FruitList.vue wires text input (debounced 300 ms + Enter) and flat type
dropdown (17 enum values + 4 aliases per spec §5 order); debounce timer
cleared on unmount.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-18 12:46:38 +02:00

OSDB — Obstsortendatenbank

A full-stack fruit-variety database (Go + Vue 3).

Features

  • Users can view a "Hello, OSDB!" landing page that confirms the backend is reachable via the Vite proxy.
  • Users can create, view, edit, and delete fruit varieties, including managing synonyms and uploading images.
  • Administrators can bulk-import the legacy fruit database from XML using scripts/import_fruits.py, and then import all publications (cover images, linked fruits, PDFs, fruit images) using scripts/import_publications.py.
  • Users can search fruits by name or synonym (case-insensitive, debounced) and filter by type or combined-type alias (e.g. "Birnen- und Quittensorten") from the fruit list.
  • Users can manage publications (books, catalogues) with cover images, linked fruits, per-fruit PDF descriptions, and fruit images; fruit detail pages show publication descriptions and images.

Quick Start

cp .env.example .env          # set credentials
make dev-db                   # start Postgres (waits until healthy)
make migrate-up               # apply schema migrations
make run-backend              # Echo API on :3000
make run-frontend             # Vite dev server on :5000

Testing

make test
S
Description
No description provided
Readme
308 KiB
Languages
Go 55.2%
Vue 18.4%
TypeScript 13.2%
Python 12.2%
Makefile 0.5%
Other 0.5%