Verification checklist
Use this page after choosing MongoDB, Supabase, or Firebase to prove the scaffold is wired correctly before you build product features on top of it.
Before you test
- Run setup.mjs and install dependencies for your chosen variant.
- Populate .env.local and restart the dev server.
- Confirm Resend is configured so OTP emails can actually be delivered.
- If you chose Supabase, run lib/db/schema.sql before testing credentials auth.
- If you chose Firebase, enable Firestore API and create the default Firestore database first.
Credentials flow
- Register a new user from /register.
- Verify the email OTP from /verify-email.
- Log in from /login.
- Request a reset from /forgot-password.
- Reset the password from /reset-password.
- Log in again with the new password.
Google OAuth flow
- Configure AUTH_GOOGLE_ID and AUTH_GOOGLE_SECRET.
- Click the Google button on /login or /register.
- Complete the Google consent flow.
- Confirm the app redirects back to /dashboard.
- Sign out and confirm logout returns you to /login.
- Verify the backend user record was created or updated correctly for the Google email.
Google OAuth now syncs a canonical backend user record across MongoDB, Supabase, and Firebase. Session data should reflect the backend-backed id, role, emailVerified, name, and image values after sign-in.
Database-specific checks
- MongoDB: confirm users and otps documents are written and that expired OTPs are no longer matched.
- Supabase: confirm rows are present in users and otps and that the project keys match the same database where you ran schema.sql.
- Firebase: confirm users and otps collections exist and create any composite index requested by the runtime error link.
Rate-limits in local dev
If UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN are missing, rate limiting becomes a no-op in local and development environments. That is useful for setup, but do not treat it as production validation.