A sophisticated frontend demonstration of passkey authentication and management capabilities with Appwrite. The application showcases all available passkey APIs including registration, authentication, and passkey lifecycle management (add, list, rename, delete, disable).
- Login Page: WebAuthn registration & authentication flows
- Home Page: Protected route with session check
- API Endpoints: Full passkey lifecycle management
/api/webauthn/register/options- Get registration challenge/api/webauthn/register/verify- Verify attestation/api/webauthn/auth/options- Get authentication challenge/api/webauthn/auth/verify- Verify assertion/api/webauthn/connect/options- Add passkey to existing account/api/webauthn/connect/verify- Verify new passkey/api/webauthn/passkeys/list- List user's passkeys/api/webauthn/passkeys/rename- Rename passkey/api/webauthn/passkeys/delete- Delete passkey/api/webauthn/passkeys/disable- Disable passkey
✓ Display logged-in user info (email, user ID) ✓ Quick stats dashboard (User ID, Email, Status) ✓ Navigation to settings ✓ Professional dashboard layout with Tailwind CSS ✓ API reference sections showing available endpoints ✓ Beautiful gradient background and card design
✓ Passkey Management Section
- List all user passkeys with metadata (name, created date, last used)
- Add new passkey button with modal flow
- Rename passkey functionality with modal
- Delete passkey with confirmation dialogs
- Disable/enable passkey toggle
- Loading states and error handling ✓ Account Section
- Display user email
- Display user ID ✓ API Demo Section
- Show which APIs are being used
- Display endpoint references
✓ Trigger passkey registration flow ✓ WebAuthn challenge/attestation handling ✓ Success feedback with animations ✓ Error display and handling ✓ Loading states
✓ Modal form for renaming passkeys ✓ Character limit (50 chars) ✓ Form validation ✓ Error handling ✓ Loading states
✓ Display passkeys with metadata in card format ✓ Passkey status badges (active, disabled, compromised) ✓ Action buttons (rename, delete, disable) ✓ Empty state when no passkeys ✓ Loading states and error handling ✓ Confirmation dialogs before delete
✓ Global sticky navigation bar ✓ Logo with branding ✓ Home and Settings links ✓ User email display ✓ Sign out button ✓ Responsive design
✓ Global navigation bar integration ✓ Tailwind CSS styling ✓ Responsive design ✓ Gradient backgrounds ✓ Inter font integration ✓ Proper metadata
✓ Tailwind CSS styling for consistency ✓ Modern input fields and buttons ✓ Info boxes explaining flows ✓ Better error/success messaging ✓ Loading states
✓ Beautiful two-column layout ✓ Left side: Feature highlights and benefits ✓ Right side: Auth form ✓ Professional branding with logo ✓ Feature cards with icons and descriptions ✓ Mobile responsive design ✓ Footer with attribution
✓ Centralized base64url encoding/decoding ✓ Buffer conversion helpers ✓ Credential handling helpers ✓ Reusable across components
✓ addPasskeyToAccount() - Add new passkey
✓ listPasskeys() - Fetch user's passkeys
✓ renamePasskey() - Rename a passkey
✓ deletePasskey() - Delete a passkey
✓ disablePasskey() - Disable a passkey
✓ signOut() - Sign out user
✓ Comprehensive error handling
✓ Tailwind CSS configuration (tailwind.config.ts)
✓ Global styles with Tailwind directives (app/globals.css)
✓ Modern color scheme (Blue/Indigo primary, Slate gray secondary)
✓ Responsive grid layouts
✓ Card-based design with shadows
✓ Gradient backgrounds
✓ Smooth transitions and hover effects
✓ Mobile-first approach
The frontend demonstrates usage of:
- User registration with passkey (login page)
- User authentication with passkey (login page)
- Adding additional passkeys to existing account (settings)
- Listing user's passkeys (settings)
- Renaming passkeys (settings)
- Deleting passkeys (settings)
- Disabling passkeys (settings)
- Session management and authentication state
- Modern Aesthetics: Gradient backgrounds, soft shadows, clean spacing
- Professional UI: Card-based layout, consistent typography
- Responsive Design: Mobile, tablet, and desktop friendly
- Accessibility: Semantic HTML, proper focus states, keyboard navigation
- User Feedback: Loading states, error messages, success confirmations
- Brand Consistency: Unified color scheme and component library
blueprint.md(this file)FRONTEND_IMPLEMENTATION.md- Detailed frontend documentationapp/settings/page.tsx- Settings pageapp/components/Navigation.tsx- Navigation componentapp/components/PasskeyList.tsx- Passkey list displayapp/components/AddPasskeyModal.tsx- Add passkey modalapp/components/RenamePasskeyModal.tsx- Rename passkey modallib/webauthn-utils.ts- WebAuthn utilitieslib/passkey-client-utils.ts- Passkey client utilitiestailwind.config.ts- Tailwind configuration
app/layout.tsx- Enhanced with navigation and stylingapp/page.tsx- Enhanced home pageapp/login/page.tsx- Enhanced login page with new designapp/components/AuthForm.tsx- Updated to Tailwind stylingapp/globals.css- Added Tailwind directives
✅ Passkey registration ✅ Passkey authentication ✅ Add multiple passkeys ✅ List passkeys with metadata ✅ Rename passkeys ✅ Delete passkeys ✅ Disable passkeys ✅ Session management ✅ Protected routes ✅ Error handling ✅ Loading states ✅ Responsive design ✅ Modern UI/UX ✅ Accessibility ✅ Code quality (ESLint) ✅ TypeScript support