Files
yourwillyourwish/docs/AUTH_PAGES_QUICK_START.md
2026-02-06 21:44:04 -06:00

10 KiB

Dedicated Auth Pages - Quick Start Guide

What Changed

Before

  • Modal popup appeared on same page
  • Limited mobile experience
  • Popup could be blocked

After

  • Dedicated /signin and /signup pages
  • Professional, modern design
  • No popup blocking issues
  • Better mobile experience
  • Works like professional sites (Google, GitHub, etc.)

URLs

Page URL
Sign In http://localhost:3001/signin
Sign Up http://localhost:3001/signup

Page Design

Sign-In Page (/signin)

┌─────────────────────────────────────────────────────┐
│  LEFT SIDE (Form)        │  RIGHT SIDE (Gradient)   │
├──────────────────────────┼──────────────────────────┤
│                          │                          │
│ 👤 Sign In               │  Beautiful gradient      │
│ Welcome back!            │  blue → purple           │
│                          │                          │
│ Email input              │  Animation elements      │
│ Password input           │                          │
│ [Sign In Button]         │  Text: "Welcome Back"    │
│                          │                          │
│ ─── Or continue with ─── │                          │
│                          │                          │
│ [Google] [GitHub]        │                          │
│ [Facebook] [Discord]     │                          │
│                          │                          │
│ Don't have account?      │                          │
│ → Sign Up link           │                          │
│                          │                          │
└──────────────────────────┴──────────────────────────┘

Sign-Up Page (/signup)

┌─────────────────────────────────────────────────────┐
│  LEFT SIDE (Form)        │  RIGHT SIDE (Gradient)   │
├──────────────────────────┼──────────────────────────┤
│                          │                          │
│ 🚀 Sign Up               │  Beautiful gradient      │
│ Start your journey       │  cyan → purple           │
│                          │                          │
│ First Name | Last Name   │  Animation elements      │
│ Email input              │                          │
│ Password input           │  Text: "Join Community"  │
│ (with strength check)    │                          │
│ Confirm Password input   │                          │
│ [Sign Up Button]         │                          │
│                          │                          │
│ ─── Or sign up with ───  │                          │
│                          │                          │
│ [Google] [GitHub]        │                          │
│ [Facebook] [Discord]     │                          │
│                          │                          │
│ Already have account?    │                          │
│ → Sign In link           │                          │
│                          │                          │
└──────────────────────────┴──────────────────────────┘

Authentication Flows

Email/Password Sign-In

User
  ↓
Visit /signin
  ↓
Enter email & password
  ↓
Click "Sign In"
  ↓
/api/auth/login processes
  ↓
✓ User authenticated
  ↓
Redirect to /account/webinars
(or custom redirect URL)

OAuth Sign-In (e.g., Google)

User
  ↓
Visit /signin
  ↓
Click "Continue with Google"
  ↓
Redirect to Google login page
  ↓
User logs in with Google
  ↓
Google redirects back with auth code
  ↓
/auth/google/callback processes
  ↓
/auth-callback verifies session
  ↓
✓ User authenticated
  ↓
Redirect to /account/webinars
(or custom redirect URL)

Email/Password Sign-Up

User
  ↓
Visit /signup
  ↓
Fill form:
  - First Name
  - Last Name
  - Email
  - Password (with strength check)
  - Confirm Password
  ↓
Click "Sign Up"
  ↓
/api/auth/register creates account
  ↓
✓ Account created & authenticated
  ↓
Redirect to /account/webinars
(or custom redirect URL)

Password Strength Requirements (Sign-Up)

As you type, you'll see real-time feedback:

Password: Secure123

✅ 8-20 characters      (12 characters)
✅ Uppercase letter     (S, P)
✅ Number               (1, 2, 3)
✅ No spaces            (none)

→ Password is valid! Click "Sign Up"

Required:

  • 8-20 characters
  • At least 1 uppercase letter
  • At least 1 number
  • No spaces

Custom Redirect URLs

After Sign-In with Redirect

http://localhost:3001/signin?redirect=/account/settings
                                       └─ Redirects here after login

After Sign-Up with Redirect

http://localhost:3001/signup?redirect=/webinars
                                      └─ Redirects here after signup

Example Redirects

# Redirect to user settings
/signin?redirect=/account/settings

# Redirect to specific webinar
/signup?redirect=/webinars/123

# Redirect to admin dashboard
/signin?redirect=/admin

# Default (no redirect param)
/signin  →  /account/webinars

Browser Experience

Header/Navbar
├─ "Sign In" button
│  └─ Links to /signin
│
└─ "Get Started" button
   └─ Links to /signup

After Authentication

  • Navbar shows user profile picture/initials
  • Click profile → Dropdown menu with:
    • My Webinars
    • Settings
    • Logout

Mobile Experience

  • Pages stack nicely on small screens
  • Form takes full width
  • Gradient background hidden (show on tablet+)
  • All inputs optimized for mobile

OAuth Providers

All providers show as buttons:

┌──────────────┬──────────────┐
│ 🔍 Google    │ 🐙 GitHub    │
└──────────────┴──────────────┘

┌──────────────┬──────────────┐
│ 👍 Facebook  │ 💬 Discord   │
└──────────────┴──────────────┘

Each button:

  • Shows provider brand colors/logos
  • 2-column grid layout
  • Hover effects with border colors
  • Click redirects to provider login

Configuration

OAuth providers are configured via Admin:

  • URL: http://localhost:3001/admin/setup
  • Section: "OAuth Providers (BetterAuth)"
  • Each provider can be enabled/disabled
  • Enter Client ID and Client Secret

Once configured:

  • OAuth buttons appear automatically
  • No page refresh needed
  • Users can immediately use them

Common Scenarios

Scenario 1: User has account

1. Visit /signin
2. Enter email & password
3. Click Sign In
4. Redirected to /account/webinars ✓

Scenario 2: New user signing up

1. Visit /signup
2. Fill form (name, email, password)
3. Password strength indicator shows green ✓
4. Click Sign Up
5. Account created, logged in
6. Redirected to /account/webinars ✓

Scenario 3: OAuth sign-in

1. Visit /signin
2. Click Google button
3. Redirected to Google login
4. Log in with Google account
5. Redirected back to app
6. Session created
7. Redirected to /account/webinars ✓

Scenario 4: First-time OAuth

1. Visit /signup
2. Click GitHub button
3. Redirected to GitHub login
4. Log in with GitHub
5. GitHub OAuth returns profile
6. BetterAuth creates new user
7. Session created
8. Redirected to /account/webinars ✓

Troubleshooting

Problem: OAuth buttons don't show

Solution:

  • Go to /admin/setup
  • Check if providers are enabled
  • Ensure Client ID/Secret are filled
  • Refresh page

Problem: "Sign In" button redirects wrong

Solution:

  • Check redirect parameter in URL
  • Default is /account/webinars
  • Use ?redirect=/desired/url to change

Problem: Password validation fails

Solution:

  • Must be 8-20 characters
  • Need uppercase letter (A-Z)
  • Need number (0-9)
  • No spaces allowed

Problem: OAuth redirects to blank page

Solution:

  • OAuth might be processing in background
  • Wait a few seconds
  • Check browser console for errors

Files Involved

Pages

  • /app/signin/page.tsx - Sign-in page
  • /app/signup/page.tsx - Sign-up page
  • /app/auth-callback/page.tsx - OAuth callback handler

Navigation

  • components/Navbar.tsx - Links to auth pages

OAuth Callbacks

  • app/auth/google/callback/route.ts
  • app/auth/github/callback/route.ts
  • app/auth/facebook/callback/route.ts
  • app/auth/discord/callback/route.ts

Configuration

  • lib/auth.ts - BetterAuth setup
  • data/system-config.json - OAuth credentials
  • /admin/setup - Admin page to configure

Key Features

Dedicated pages - Modern, professional experience
No popup blocking - Full page URLs
OAuth support - 4 providers (Google, GitHub, Facebook, Discord)
Redirect URLs - Custom post-auth navigation
Password validation - Real-time strength feedback
Dark mode - Full support
Mobile responsive - Works on all devices
Professional design - Split layout with gradients


Next Steps

  1. Configure OAuth → Go to /admin/setup
  2. Test Sign-In → Visit /signin
  3. Test Sign-Up → Visit /signup
  4. Test OAuth → Click provider buttons
  5. Test Redirects → Use ?redirect= parameter

URLs Quick Reference

What URL
Sign In /signin
Sign Up /signup
Sign In (with redirect) /signin?redirect=/account/settings
Sign Up (with redirect) /signup?redirect=/webinars
OAuth Callback /auth-callback?redirect=/account/webinars
Admin Setup /admin/setup
User Dashboard /account/webinars
User Settings /account/settings

Done! All dedicated auth pages are ready to use! 🚀