Skip to content

Authentication

The authentication module handles user registration, login, and password management using Firebase Authentication via the svelte-firekit library.

Module path: src/lib/modules/auth/

MethodFunctionDescription
Google OAuthfirekitAuth.signInWithGoogle()One-click Google sign-in
Email/PasswordfirekitAuth.signInWithEmail()Traditional email login
RegistrationfirekitAuth.registerWithEmail()New account creation
Password ResetfirekitAuth.sendPasswordReset()Email-based reset
RouteFilePurpose
/sign-insrc/routes/(auth)/sign-in/+page.svelteLogin page
/sign-upsrc/routes/(auth)/sign-up/+page.svelteRegistration page
/forgot-passwordsrc/routes/(auth)/forgot-password/+page.sveltePassword reset

The (auth) layout uses AuthGuard with requireAuth={false} and redirects authenticated users to /.

ComponentFilePurpose
sign-in-form.sveltemodules/auth/components/Email/password login form
sign-up-form.sveltemodules/auth/components/Registration form with name, email, terms
google-sign-in.sveltemodules/auth/components/Google OAuth button
reset-password-form.sveltemodules/auth/components/Password reset form

All schemas use Valibot:

{
email: string // required, valid email
password: string // required, min 8 chars
}
{
firstName: string // required, min 1 char
lastName: string // required, min 1 char
email: string // required, valid email
password: string // required, min 8 chars
agreeToTerms: boolean // must be true
}
{
email: string // required, valid email
}
  1. Firebase Auth account created
  2. User document created at users/{uid} in Firestore
  3. Display name generated from first + last name
  4. Firebase Analytics events tracked (sign_up, user properties)
  5. Referral signup processing attempted
  6. Redirect to /
  1. Firebase Auth session established
  2. New user detection via account creation timestamp
  3. Referral processing for new Google sign-in users
  4. Analytics events tracked (sign_in, user properties)
  5. Redirect to /

All auth forms track comprehensive analytics events:

  • sign_in_attempt / sign_in / sign_in_failed
  • sign_up / sign_up_failed
  • form_interaction (focus, blur, input, checkbox events)
  • User properties: type, method, dates, display name, email domain
  • userStore (src/lib/stores/user-store.svelte.ts) - Current user state
  • userManager (src/lib/stores/user-manager.svelte.ts) - User data management

Implemented in the navigation component (nav-user.svelte):

await firekitAuth.signOut();