Live demo
Creating a passwordless login system
Passwords are a shared-secret liability. This demo shows a modern passwordless flow that uses email OTP to establish identity and WebAuthn passkeys to authenticate.
Private keys stay on-device and are bound to your relying party (`rpId`), which gives stronger phishing resistance than password-based login.
Presentation: Creating a Passwordless User System.
Source code: Passwordless Login Demo.
Email OTP establishes identity
Start with username + email, then verify a one-time code. This creates the account identity without introducing a password.
Passkeys authenticate
Passkeys are browser-native public/private key auth (think SSH keys for the web) with biometrics or a device PIN.
Demo boundaries
This project intentionally skips production hardening such as rate limiting and real email delivery.