# 1. Install dependencies
npm install
# 2. Set up environment (copy template if needed)
cp env.sample .env
# 3. Fill in your Appwrite credentials in .env
# Edit: NEXT_PUBLIC_APPWRITE_PROJECT, NEXT_PUBLIC_APPWRITE_ENDPOINT, etc.
# 4. Run development server
npm run dev
# 5. Open browser
# Visit: http://localhost:3000- Go to http://localhost:3000/login
- Enter your email
- Click "Continue with Passkey"
- Approve passkey creation on your device
- Should redirect to home page
- Go to http://localhost:3000/login
- Enter same email
- Click "Continue with Passkey"
- Approve authentication on your device
- Should be logged in immediately
- Click "Settings" in navbar (or go to /settings)
- See your account info
- See your passkeys
- Try:
- Add new passkey (+Add Passkey button)
- Rename passkey (Rename button)
- Disable passkey (Disable button)
- Delete passkey (Delete button)
- QUICK_START_FRONTEND.md - User-friendly guide with screenshots (conceptually)
- FRONTEND_IMPLEMENTATION.md - Technical details for developers
- blueprint.md - Implementation overview
- IMPLEMENTATION_SUMMARY_FRONTEND.md - Detailed summary
Project Structure:
├── app/
│ ├── components/
│ │ ├── Navigation.tsx ← Global navbar
│ │ ├── PasskeyList.tsx ← Passkey display
│ │ ├── AddPasskeyModal.tsx ← Add passkey UI
│ │ ├── RenamePasskeyModal.tsx ← Rename passkey UI
│ │ └── AuthForm.tsx ← Login form
│ ├── settings/
│ │ └── page.tsx ← Settings page
│ ├── page.tsx ← Home page
│ ├── login/page.tsx ← Login page
│ ├── layout.tsx ← Root layout
│ └── globals.css ← Tailwind directives
├── lib/
│ ├── webauthn-utils.ts ← Base64url utilities
│ ├── passkey-client-utils.ts ← Passkey API calls
│ └── appwrite.ts ← Appwrite client
└── tailwind.config.ts ← Tailwind config
Edit tailwind.config.ts to change the color scheme
// Currently: Blue/Indigo primary
// Try: Purple, Green, Red, etc.- Admin dashboard
- Audit logs
- Device management
- Backup codes
- Sort passkeys
- Search passkeys
- Export passkeys
- Import passkeys
- Email verification
- Two-factor authentication
- Social login fallback
- Passwordless email link
# Update dependencies
npm update
# Check for security issues
npm audit
# Format code
npm run lint -- --fix
# Build for production
npm run build- Track failed login attempts
- Monitor API response times
- Check for errors in browser console
- Review server logs
- Registration success rate
- Login success rate
- Average authentication time
- Passkey addition/deletion rate
- Error rates by endpoint
npm install -g vercel
vercel
# Follow prompts, set environment variablesFROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]npm run build
npm start
# Ensure environment variables are setBefore deployment:
- Set strong PASSKEY_CHALLENGE_SECRET
- Use HTTPS everywhere
- Set proper CORS headers
- Enable rate limiting
- Configure CSP headers
- Test on multiple browsers
- Check for console errors
- Verify session timeout
- Test password recovery
- Audit logs review
- Use a modern browser (Chrome 90+, Firefox 78+)
- Ensure HTTPS (or localhost)
- Check browser settings
- Passkey limit reached
- Delete unused passkeys
- Try different email
- Rate limiting active
- Wait for Retry-After header time
- Try again later
- Use another registered passkey
- Contact administrator
- Check recovery options
- WebAuthn Spec: https://w3c.github.io/webauthn/
- Appwrite Docs: https://appwrite.io/docs
- Next.js Docs: https://nextjs.org/docs
- Tailwind CSS: https://tailwindcss.com/docs
- All pages load without errors
- Can register with passkey
- Can login with passkey
- Can add multiple passkeys
- Can rename passkeys
- Can delete passkeys
- Navigation works
- Sign out works
- Mobile responsive
- No console errors
- Check Lighthouse score
- Optimize images
- Minimize CSS/JS bundles
- Enable caching
- Use CDN for static assets
- Monitor Core Web Vitals
- Test on slow networks
- Week 1: Deploy and test thoroughly
- Week 2: Gather user feedback
- Week 3: Fix issues and improve
- Week 4: Add enhancements
- Ongoing: Monitor and maintain
- Read QUICK_START_FRONTEND.md
- Setup environment variables
- Run npm install
- Start development server
- Test registration flow
- Test login flow
- Test settings page
- Review code organization
- Check for customizations needed
- Plan deployment strategy
All answers are in the documentation:
- How do I use it? → QUICK_START_FRONTEND.md
- How does it work? → FRONTEND_IMPLEMENTATION.md
- What was implemented? → blueprint.md
- What's the structure? → This file
Happy building! 🎉