Pond data model and CRUD API with personal pond at signup #21
Labels
No Label
area:auth
area:docs
area:export
area:ops
area:storage
area:supply-chain
auth
backend
blocked
collab
deployment
docs
effort:L
effort:M
effort:S
frontend
plugins
qa
vs-nfd
vs-nfd:blocker
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: stwaidele/dorfteich#21
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
Ponds are the top-level container of the product. Every self-registered person gets a personal pond where they are Pond Admin (vision).
Scope
Prisma models
ponds(+ pond-level trash columns) per data-model.md; endpointsPOST/GET/PATCH /ponds,GET /ponds/:slug,DELETE /ponds/:id(soft delete). On e-mail verification (#13) auto-create the personal pond (type=personal, name from display name, unique slug). Until M5, access control is interim: only the owner (and Site Admins) can see/modify a pond — implement this in one clearly markedInterimAccessServicethat M5 will replace.Acceptance criteria
GET /pondsInterimAccessServiceis the only place answering access questions (grep-provable)Technical notes
sidebarSortand font slots with defaults now; editing UIs come later.Dependencies
Depends on #13, #20.
Size: ~1.5 days
Conventions: English code/comments, clear human-readable code, no hard-coded UI strings (ADR 0012, add
deanden), permission checks only via the shared guard (docs/architecture/permissions.md). Read the referenced ADRs before starting.Implemented in
f0850ee, pipeline fully green (CI incl. db-backed e2e, CD deploy test → smoke → int).Verification against acceptance criteria:
-2,-3, …), slugify is URL-safe with German transliteration — unit + e2e testsInterimAccessServiceis the only place answering pond access questions (grep -rn "isSiteAdmin\|ownerId ===" apps/api/src/ponds→ only interim-access.service.ts); trash/restore additionally use the existing SiteAdminGuardpersonal_pond_undeletable, localized de/en); seed creates personal ponds for active fixtures