Citizen-Science-App für botanische Beobachtungen — föderierte App des mana e.V.-Ökosystems. Erste Vereins-App mit 3-Schicht-Datenmodell (Species/Specimen/Observation), 3-Stufen-GPS (exact/rounded_100m/ region_only) und fail-closed Sensitivity-Schutz für FFH-Anhang-IV- Arten. Stand η-0 (Plan v0.2 + Detail-Pass, Architect+Compliance-Audit 2026-05-17): - Workspace: pnpm/turbo/tsconfig/prettier - apps/api: Hono+Bun mit /healthz, /readyz, /healthz/details, /.well-known/mana-app.json. Smoke alle vier Endpoints grün. - apps/web: SvelteKit 2 + Svelte 5 + Tailwind v4, Herbarium-Theme, Landing-Page mit Phasen-Plan. svelte-check 0 errors / 0 warnings. - docker-compose: postgis/postgis:16-3.4 auf 5449, init-postgis.sql - app-manifest.json: validiert gegen @mana/shared-share-protocol@0.4.0 (2 shares, 2 accepts, 3 tools) - Doku: CLAUDE.md, README.md, STATUS.md Cross-Repo: @mana/shared-share-protocol@0.4.0 published mit 4 neuen Share-Types (mana/photo, mana/geo-point, mana/plant-observation, mana/plant-specimen). Plan: mana/docs/playbooks/HERBATRIUM_GREENFIELD.md Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.1 KiB
Herbatrium
Citizen-Science-App für botanische Beobachtungen in freier Natur. Foto, GPS, KI-Klassifikation, kollaborative Specimen-Historie. Datensouverän und Open-Source.
Föderierte App des Vereins mana e.V. — neben Cardecky, Memoro, Werdrobe, Seepuls und weiteren Peer-Apps im selben Ökosystem.
- Web: herbatrium.mana.how (noch nicht deployed)
- API: herbatrium-api.mana.how (noch nicht deployed)
- Plan:
mana/docs/playbooks/HERBATRIUM_GREENFIELD.md - Status:
STATUS.md— aktueller Phasen-Stand
Was es macht
User:innen laden Pflanzen-Fotos hoch. Das System klassifiziert die Art (mana-llm + Pl@ntNet als Verifier), legt einen GPS-verankerten Specimen-Datensatz an, und ermöglicht es mehreren Beobachter:innen, denselben physischen Pflanzen-Standort über Zeit zu dokumentieren — Wachstum, Blüte, Schädigung, Verschwinden.
Spätere Ausbaustufe: 3D-Rekonstruktion aus Mehr-Foto-Beobachtungen.
Eigenschaften
- 3-Schicht-Datenmodell: Species → Specimen → Observation
- Public-First mit explizitem Lizenz-Picker (CC-BY-SA-4.0 / CC-BY-NC / ARR)
- 3-Stufen-GPS-Sichtbarkeit:
exact(Owner),rounded_100m(Public-Feed),region_only(geschützte Arten, ~30–50 km Region) - Fail-closed Sensitivity: automatische Schutzart-Liste (GBIF-IUCN +
FFH-Anhang-IV), Default
is_sensitive=truebis Lookup das Gegenteil belegt - PostGIS-basiertes Specimen-Matching binnen species-spezifischem Radius (Bäume 5 m / Stauden 30 m / Default 20 m)
- 3-Layer-Foto-Storage: original verlustfrei (Owner-only, signed URL, Access-Log), display 2048px WebP EXIF-stripped, thumb 512px
Quick-Start (Entwicklung)
# Voraussetzung: Verdaccio-Token in ~/.npmrc (siehe unten),
# Docker laufend, pnpm 9.15.x
pnpm install # gegen pkg.mana.how
docker compose up -d # PostGIS :5449
pnpm --filter ./apps/api dev # Hono+Bun :3101
pnpm --filter ./apps/web dev # SvelteKit :3102
# Smoke-Test:
curl http://localhost:3101/healthz
curl http://localhost:3101/.well-known/mana-app.json
open http://localhost:3102
Verdaccio-Token
Das Repo zieht @mana/*-Pakete aus dem privaten Vereins-Verdaccio
(pkg.mana.how). Token einmalig holen:
npm login --registry=https://pkg.mana.how --scope=@mana
# oder: existierenden Token aus ~/.npmrc kopieren
In CI: MANA_NPM_TOKEN als GitHub-Secret hinterlegen.
Stack
- Web: SvelteKit 2 + Svelte 5 (runes only) + Tailwind v4
- API: Hono + Bun + Drizzle ORM
- DB: PostgreSQL 16 + PostGIS 3.4
- Klassifikation: mana-llm (Gemini Pro Vision, primär) + Pl@ntNet (AGPV, sekundär als Verifier)
- Auth: mana-auth (Better-Auth + EdDSA-JWT via JWKS-Cache)
- Storage: mana-media (MinIO/S3)
- Geo: PostGIS + mana-geocoding
- Map: MapLibre + Cloudflare-Pull-through-Cache (OSM)
Ports: API 3101, Web 3102, Postgres 5449.
Phasen-Roadmap
| Phase | Inhalt |
|---|---|
| η-0 | Repo-Skelett — aktuell (2026-05-17) |
| η-1 | Solo-Upload + 3-Layer-Photo-Pipeline + Drizzle-Schema |
| η-2 | Klassifikation (mana-llm primär, Pl@ntNet Verifier) + GBIF/FFH-Sensitivity |
| η-3 | Specimen-Matching mit PostGIS + Capture-Map |
| η-4 | Public-Feed + Lizenz-Picker + 3-Stufen-GPS (Hard-Gate) |
| η-5 | Föderations-Endpoints (Share/Tools/DSGVO) |
| η-6 | 3D-Pipeline-Vorbereitung auf mana-gpu |
| η-7 | Polish + Take-Down-UI + AGB-Seite + Live (Hard-Gate) |
| η-8+ | Native iOS, Local-First, 3D-Viewer (opportunistisch) |
Details in STATUS.md und im
Greenfield-Playbook.
Lizenz
Code: zur Klärung beim Live-Gang. Inhalte (Public-Observations): expliziter Lizenz-Picker, CC-BY-SA-4.0 empfohlen für GBIF-Re-Sync-Kompatibilität.
Kontakt
- Verein: verein.mana.how
- E-Mail: kontakt@mana.how
- Issue-Tracker: git.mana.how/till/herbatrium (folgt)