Skip to content

Phase 10: anonymous volunteer feedback — rating + comment to org admins - #24

Closed
ArneeMe wants to merge 1 commit into
claude/phase-9-om-i18nfrom
claude/phase-10-feedback
Closed

Phase 10: anonymous volunteer feedback — rating + comment to org admins#24
ArneeMe wants to merge 1 commit into
claude/phase-9-om-i18nfrom
claude/phase-10-feedback

Conversation

@ArneeMe

@ArneeMe ArneeMe commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Stacked on #23 (chain: #16#17#20#21#22#23 → this). Retarget bases downward as parents merge.

What it does

Privacy by construction

The feedback row carries no identity: no user id, no submission reference, no IP — only org, rating, comment, timestamp. It cannot be joined back to a person from server state, consistent with the platform's model.

Plumbing

  • One new table (feedback), added both as scripts/migrations/2026-07-feedback.sql (run in Hasura console + track the table) and to the fresh-install baseline. This is the first DB change since the baseline — deliberately small.
  • API: anonymous POST behind a tight per-IP rate limit (5/10 min, stricter than the form's), admin GET/org-scoped DELETE behind the usual requireOrgMemberBySlug guard.

Deploy note

Run the migration SQL and track feedback in the Hasura console before merging to production — the POST fails harmlessly (feedback error text on the confirmation screen, submission unaffected) if the table is missing.

Verification

  • Typecheck, lint, 108 unit tests, production build pass.
  • 8/8 E2E pass, including a new test that walks form → confirmation → rate 4 stars → comment → send and asserts the exact API payload.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BFHkXUuHJME4cF9AJWbavB


Generated by Claude Code

After submitting the form, the confirmation screen offers a 1-5 star
rating with an optional comment (localized NO/EN, with an explicit
'don't include personal data — this is anonymous' hint). Stored per
org with NO identity: no user id, no submission reference, no IP.

- New feedback table (migration + baseline): org, rating 1-5 CHECK,
  comment, timestamp.
- API at /api/org/[slug]/feedback: anonymous POST behind a tight
  per-IP rate limit (5/10min), admin GET and org-scoped DELETE behind
  the usual membership guard.
- New 'Tilbakemeldinger' admin tab: average rating, newest-first list,
  per-item delete.
- E2E test walks form -> confirmation -> rate 4 stars -> comment ->
  send, asserting the exact API payload.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BFHkXUuHJME4cF9AJWbavB
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying inf319-certificate with  Cloudflare Pages  Cloudflare Pages

Latest commit: 933474b
Status: ✅  Deploy successful!
Preview URL: https://1ff104ab.inf319-certificate.pages.dev
Branch Preview URL: https://claude-phase-10-feedback.inf319-certificate.pages.dev

View logs

ArneeMe commented Jul 12, 2026

Copy link
Copy Markdown
Owner Author

Superseded by the review-ordered stack #25#29 (feedback landed in #28, the org-features tier). Closing.


Generated by Claude Code

@ArneeMe ArneeMe closed this Jul 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants