Sign in
A centred card on a muted background.mzizi-auth-card and mzizi-auth-layout if you would rather not compose
this yourself.
Sign up
The same layout with a name field and a stated password requirement.One name field
Use a single Full name field. Do not split into first and last, and do not validate its length. See inclusive language for why.Validation
FormMessage.
Error handling
Accessibility
- Every input has an associated label.
autoCompleteon every field, so a password manager can fill it.- The form is fully keyboard-navigable.
- Errors are announced — use
aria-live. - The submit button shows its loading state.
Sessions
- Keep session tokens in HTTP-only cookies, not
localStorage— a token a script can read is a token an injected script can exfiltrate. - Refresh tokens rather than forcing frequent re-authentication.
- Put a clear sign-out action in the user menu.
- Confirm before signing out of all devices.
Password reset
- The reader selects “Forgot password?” on the sign-in screen.
- They enter an email address.
- The system sends a reset link — and confirms it did, without saying whether the address was registered.
- They follow the link and set a new password.
- They are returned to sign in.