841f53fac85d8f9385fa274c0af3ea32f6995a9d
- Replace src.Read(data) with io.ReadAll(src) to prevent silent truncation on large uploads - Reject zero-byte file uploads with 400 rather than storing empty BYTEA - Add strings.TrimSpace to validateFruit so whitespace-only name/osdb_number returns 422 - Reset offset to 0 in fruitStore.create() so navigating back to list after create shows page 1 - Log t.Cleanup DELETE error in integration test to surface constraint failures clearly Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.
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
Languages
Go
55.2%
Vue
18.4%
TypeScript
13.2%
Python
12.2%
Makefile
0.5%
Other
0.5%