Skip to content

Phase 6: public UX — form validation, confirmation screen, verify states, self-signup - #20

Closed
ArneeMe wants to merge 1 commit into
claude/phase-3-onboardingfrom
claude/phase-6-public-ux
Closed

Phase 6: public UX — form validation, confirmation screen, verify states, self-signup#20
ArneeMe wants to merge 1 commit into
claude/phase-3-onboardingfrom
claude/phase-6-public-ux

Conversation

@ArneeMe

@ArneeMe ArneeMe commented Jul 11, 2026

Copy link
Copy Markdown
Owner

Stacked on #17 (base is claude/phase-3-onboarding so the diff shows only phase 6 — the signup flow builds on phase 3's members page). Merge order: #16#17 → this, retargeting bases as each lands. Independent of the #18#19 stack.

Volunteer form

  • Client-side validation per the template's form schema: required-by-default (respects optional), date and number sanity checks, inline error messages that clear as the volunteer types. Pure logic lives in src/util/validateFormField.ts with unit tests. Notably this fixes required dropdowns, which MUI never enforced natively.
  • A real confirmation screen after submit — what happens next, and that the data is deleted automatically when the attest is issued — replacing the old dialog that dropped you back onto the stale form.

Verify page

  • Unmistakable green ✓ / red ✗ status with plain-language explanations (invalid = incomplete link, altered field, or never issued). The editable field grid is reframed as "attesterte opplysninger" you can perturb to watch verification fail.

Self-signup

  • /registrer via Nhost signUpEmailPassword. A fresh account carries zero org memberships, so it grants no access by itself — an existing member must still add the address on the Medlemmer page. Linked from the login page and the members-page helper text. Handles both Nhost modes (immediate session vs. email verification required).

Verification

  • Typecheck, lint, 104 tests (5 new), production build pass.
  • Dev-server smoke: /registrer, /login, and the verify page all render the new states.
  • Needs one manual pass against live Nhost: signup (check whether your project requires email verification) and an invalid/valid QR scan.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BFHkXUuHJME4cF9AJWbavB


Generated by Claude Code

- SchemaForm now validates before submit: required-by-default per the
  form schema (respects optional), date/number sanity, inline errors
  that clear as the volunteer fixes them. Pure logic extracted to
  util/validateFormField.ts with unit tests (vitest has no JSX setup,
  matching the repo's pure-module test pattern).
- Successful submission shows a real confirmation screen (what happens
  next, that data is auto-deleted at issuance) instead of a dialog over
  the stale form.
- Verify page: unmistakable green/red status with an explanation of
  what invalid can mean, and the field grid reframed as 'attesterte
  opplysninger' you can perturb to see verification fail.
- /registrer self-signup via nhost signUpEmailPassword. A fresh account
  has zero org memberships so it grants nothing by itself; linked from
  the login page and the Medlemmer helper text.

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: 669d229
Status: ✅  Deploy successful!
Preview URL: https://9a4a8325.inf319-certificate.pages.dev
Branch Preview URL: https://claude-phase-6-public-ux.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 (form validation/confirmation/verify UX in #27, signup in #29). 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