# ThrillWiki User Flows > Visual diagrams of user journeys and system interactions --- ## Table of Contents 1. [Discovery Flows](#discovery-flows) 2. [Authentication Flows](#authentication-flows) 3. [Content Viewing Flows](#content-viewing-flows) 4. [Contribution Flows](#contribution-flows) 5. [Engagement Flows](#engagement-flows) 6. [Moderation Flows](#moderation-flows) 7. [Admin Flows](#admin-flows) --- ## Discovery Flows ### Homepage Discovery Journey ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ USER ARRIVES │ │ │ │ │ ┌───────────────┼───────────────┐ │ │ ▼ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Search │ │ Discovery│ │ Recent │ │ │ │ Bar │ │ Tabs │ │ Changes │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Instant │ │ Content │ │ Click │ │ │ │ Results │ │ Grid │ │ Item │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ │ └──────────────┼──────────────┘ │ │ ▼ │ │ ┌──────────┐ │ │ │ Entity │ │ │ │ Page │ │ │ └──────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ### Search Flow ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ User Types Query │ │ │ │ │ ▼ │ │ ┌───────────────────┐ │ │ │ Debounce Input │ │ │ │ (300ms) │ │ │ └─────────┬─────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────┐ │ │ │ Search API │ │ │ │ Called │ │ │ └─────────┬─────────┘ │ │ │ │ │ ┌───────┴───────┐ │ │ ▼ ▼ │ │ ┌─────────┐ ┌─────────┐ │ │ │ Results │ │ No │ │ │ │ Found │ │ Results │ │ │ └────┬────┘ └────┬────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌─────────┐ ┌─────────┐ │ │ │ Display │ │ Empty │ │ │ │ List │ │ State │ │ │ └────┬────┘ └─────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────┐ │ │ │ User Selects Result │ │ │ │ (Click or Keyboard) │ │ │ └───────────┬─────────────┘ │ │ │ │ │ ▼ │ │ Navigate to Page │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ### Parks Nearby Flow ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ User Opens Nearby Page │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Check Location │ │ │ │ Preferences │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ┌───────────┴───────────┐ │ │ ▼ ▼ │ │ ┌─────────┐ ┌───────────┐ │ │ │ Saved │ │ No Saved │ │ │ │Location │ │ Location │ │ │ └────┬────┘ └─────┬─────┘ │ │ │ │ │ │ │ ▼ │ │ │ ┌───────────────────┐ │ │ │ │ Request Browser │ │ │ │ │ Geolocation │ │ │ │ └─────────┬─────────┘ │ │ │ │ │ │ │ ┌─────────────┴─────────────┐ │ │ │ ▼ ▼ │ │ │ ┌─────────┐ ┌─────────────┐ │ │ │ │ Granted │ │ Denied │ │ │ │ └────┬────┘ └──────┬──────┘ │ │ │ │ │ │ │ │ │ ▼ │ │ │ │ ┌───────────────┐ │ │ │ │ │ Show Manual │ │ │ │ │ │ Location Entry│ │ │ │ │ └───────┬───────┘ │ │ │ │ │ │ │ └────────┼──────────────────────────┘ │ │ ▼ │ │ ┌──────────────┐ │ │ │ Load Parks │ │ │ │ Within Radius│ │ │ └──────┬───────┘ │ │ │ │ │ ┌───────┴───────┐ │ │ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ │ │ │ Map │ │ List │ │ │ │ View │ │ View │ │ │ └──────────┘ └──────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Authentication Flows ### Sign Up Flow ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ User Clicks "Sign Up" │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Choose Sign Up Method │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ┌───────────┼───────────────────────┐ │ │ ▼ ▼ ▼ │ │ ┌─────────┐ ┌─────────┐ ┌───────────┐ │ │ │ Email │ │ Magic │ │ OAuth │ │ │ │Password │ │ Link │ │(Google/ │ │ │ └────┬────┘ └────┬────┘ │ Discord) │ │ │ │ │ └─────┬─────┘ │ │ ▼ ▼ │ │ │ ┌─────────┐ ┌─────────┐ │ │ │ │ Fill │ │ Enter │ │ │ │ │ Form │ │ Email │ │ │ │ └────┬────┘ └────┬────┘ │ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌─────────────────────────────────────────────┐ │ │ │ CAPTCHA Verification │ │ │ └─────────────────────┬───────────────────────┘ │ │ │ │ │ ▼ │ │ ┌──────────────────┐ │ │ │ Email Sent │ │ │ │ (Confirmation) │ │ │ └────────┬─────────┘ │ │ │ │ │ ▼ │ │ ┌──────────────────┐ │ │ │ User Clicks Link │ │ │ └────────┬─────────┘ │ │ │ │ │ ▼ │ │ ┌──────────────────┐ │ │ │ Email Verified │ │ │ │ Account Active │ │ │ └────────┬─────────┘ │ │ │ │ │ ▼ │ │ ┌──────────────────┐ │ │ │ Redirect to │ │ │ │ Profile Setup │ │ │ └──────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ### Sign In Flow ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ User Clicks "Sign In" │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Enter Credentials │ │ │ │ (Email/Password or OAuth)│ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Validate Credentials │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ┌───────────┴───────────┐ │ │ ▼ ▼ │ │ ┌─────────┐ ┌───────────┐ │ │ │ Success │ │ Failed │ │ │ └────┬────┘ └─────┬─────┘ │ │ │ │ │ │ │ ▼ │ │ │ ┌───────────────┐ │ │ │ │ Show Error │ │ │ │ │ (Too many │ │ │ │ │ attempts = │ │ │ │ │ lockout) │ │ │ │ └───────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Check for MFA │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ┌─────────┴─────────┐ │ │ ▼ ▼ │ │ ┌─────────┐ ┌───────────┐ │ │ │ MFA │ │ No MFA │ │ │ │ Enabled │ │ │ │ │ └────┬────┘ └─────┬─────┘ │ │ │ │ │ │ ▼ │ │ │ ┌─────────────┐ │ │ │ │ Enter TOTP │ │ │ │ │ Code │ │ │ │ └──────┬──────┘ │ │ │ │ │ │ │ └───────────────┤ │ │ ▼ │ │ ┌──────────────────┐ │ │ │ Check Ban Status │ │ │ └────────┬─────────┘ │ │ │ │ │ ┌────────────┴────────────┐ │ │ ▼ ▼ │ │ ┌─────────┐ ┌───────────┐ │ │ │ Banned │ │ Not Banned│ │ │ └────┬────┘ └─────┬─────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌─────────┐ ┌───────────────┐ │ │ │ Show │ │ Create Session│ │ │ │ Message │ │ Redirect Home │ │ │ └─────────┘ └───────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Content Viewing Flows ### Park Page Journey ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ User Arrives at Park Page │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ View Hero Section │ │ │ │ (Banner, Name, Stats) │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ SELECT TAB │ │ │ ├──────────┬──────────┬──────────┬──────────┬────────────┤ │ │ │ Overview │ Rides │ Reviews │ Photos │ History │ │ │ └────┬─────┴────┬─────┴────┬─────┴────┬─────┴─────┬──────┘ │ │ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ │ │ ┌─────────┐┌─────────┐┌─────────┐┌─────────┐┌──────────┐ │ │ │ Park ││ Ride ││ Review ││ Photo ││ Version │ │ │ │ Info, ││ List ││ List ││ Gallery ││ History │ │ │ │ Map, ││ with ││ with ││ ││ Timeline │ │ │ │ Contact ││ Filters ││ Ratings ││ ││ │ │ │ └────┬────┘└────┬────┘└────┬────┘└────┬────┘└──────────┘ │ │ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ │ ┌──────────────────────────────────┐ │ │ │ │ CLICK ITEM FOR DETAIL │ │ │ │ └─────────────────┬────────────────┘ │ │ │ │ │ │ │ ┌───────────┴───────────┐ │ │ │ ▼ ▼ │ │ │ ┌───────────┐ ┌───────────┐ │ │ │ │ Ride Page │ │ Lightbox │ │ │ │ └───────────┘ └───────────┘ │ │ │ │ │ └──────────────────────────────────────────────────────▶│ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ USER ACTIONS │ │ │ ├──────────────┬──────────────┬──────────────────────────┤ │ │ │ Edit Park │ Write Review │ Upload Photo │ Log Credit│ │ │ │ (if logged) │ (if logged) │ (if logged) │(if logged)│ │ │ └──────────────┴──────────────┴──────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Contribution Flows ### Submit New Content Flow (The Sacred Pipeline) ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ THE SACRED PIPELINE │ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ │ │ │ │ USER │ │ │ │ │ │ │ │ │ ▼ │ │ │ │ ┌───────────────────────────────────────┐ │ │ │ │ │ SUBMISSION FORM │ │ │ │ │ │ • Multi-step wizard │ │ │ │ │ │ • Auto-save drafts │ │ │ │ │ │ • Validation │ │ │ │ │ │ • Unit conversion │ │ │ │ │ └─────────────────┬─────────────────────┘ │ │ │ │ │ │ │ │ │ ▼ │ │ │ │ ┌───────────────────────────────────────┐ │ │ │ │ │ SUBMISSION RECORD CREATED │ │ │ │ │ │ (content_submissions table) │ │ │ │ │ │ Status: "pending" │ │ │ │ │ └─────────────────┬─────────────────────┘ │ │ │ │ │ │ │ │ └─────────────────────┼───────────────────────────────────┘ │ │ │ │ │ ┌─────────────────────┼───────────────────────────────────┐ │ │ │ ▼ │ │ │ │ MODERATION ┌───────────────────────────────────────┐ │ │ │ │ │ MODERATION QUEUE │ │ │ │ │ │ • Appears in moderator dashboard │ │ │ │ │ │ • Sorted by priority/age │ │ │ │ │ └─────────────────┬─────────────────────┘ │ │ │ │ │ │ │ │ │ ▼ │ │ │ │ ┌───────────────────────────────────────┐ │ │ │ │ │ MODERATOR CLAIMS ITEM │ │ │ │ │ │ • Locks item for 30 minutes │ │ │ │ │ │ • Prevents conflicts │ │ │ │ │ └─────────────────┬─────────────────────┘ │ │ │ │ │ │ │ │ │ ▼ │ │ │ │ ┌───────────────────────────────────────┐ │ │ │ │ │ REVIEW INTERFACE │ │ │ │ │ │ • Side-by-side diff │ │ │ │ │ │ • Field-by-field review │ │ │ │ │ │ • Preview changes │ │ │ │ │ └─────────────────┬─────────────────────┘ │ │ │ │ │ │ │ │ │ ┌───────────────┼───────────────┐ │ │ │ │ ▼ ▼ ▼ │ │ │ │ ┌─────────┐ ┌───────────┐ ┌─────────┐ │ │ │ │ │ APPROVE │ │ REQUEST │ │ REJECT │ │ │ │ │ │ │ │ CHANGES │ │ │ │ │ │ │ └────┬────┘ └─────┬─────┘ └────┬────┘ │ │ │ │ │ │ │ │ │ │ └────────────────┼───────────────┼──────────────┼─────────┘ │ │ │ │ │ │ │ │ ▼ ▼ │ │ │ ┌──────────────┐ ┌──────────────┐ │ │ │ │ Notify User │ │ Notify User │ │ │ │ │ To Revise │ │ With Reason │ │ │ │ └──────────────┘ └──────────────┘ │ │ │ │ │ ┌────────────────┼────────────────────────────────────────┐ │ │ │ ▼ │ │ │ │ APPROVAL ┌───────────────────────────────────────┐ │ │ │ │ │ EDGE FUNCTION TRIGGERED │ │ │ │ │ │ • Transaction begins │ │ │ │ │ │ • Create/update entity │ │ │ │ │ │ • Create version record │ │ │ │ │ │ • Update submission status │ │ │ │ │ │ • Transaction commits │ │ │ │ │ └─────────────────┬─────────────────────┘ │ │ │ │ │ │ │ │ │ ▼ │ │ │ │ ┌───────────────────────────────────────┐ │ │ │ │ │ VERSION RECORD CREATED │ │ │ │ │ │ • Full snapshot of data │ │ │ │ │ │ • Version number incremented │ │ │ │ │ │ • is_current = true │ │ │ │ │ └─────────────────┬─────────────────────┘ │ │ │ │ │ │ │ │ │ ▼ │ │ │ │ ┌───────────────────────────────────────┐ │ │ │ │ │ ENTITY NOW VISIBLE │ │ │ │ │ │ • Appears in listings │ │ │ │ │ │ • Searchable │ │ │ │ │ │ • Has public URL │ │ │ │ │ └───────────────────────────────────────┘ │ │ │ │ │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ### Edit Content Flow ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ User Clicks "Edit" on Entity │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Check User Role │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ┌───────────┴───────────────────┐ │ │ ▼ ▼ │ │ ┌─────────────┐ ┌───────────────┐ │ │ │ Moderator+ │ │ Regular User │ │ │ │ (Skip mod) │ │ (Needs review)│ │ │ └──────┬──────┘ └───────┬───────┘ │ │ │ │ │ │ └───────────────────────────┤ │ │ ▼ │ │ ┌───────────────────────┐ │ │ │ Load Edit Form │ │ │ │ (Pre-filled with │ │ │ │ current data) │ │ │ └───────────┬───────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────┐ │ │ │ User Makes Changes │ │ │ │ (Auto-save enabled) │ │ │ └───────────┬───────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────┐ │ │ │ Add Submission Note │ │ │ │ (Explain changes) │ │ │ └───────────┬───────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────┐ │ │ │ Submit for Review │ │ │ │ or Direct Apply │ │ │ └───────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ### Photo Upload Flow ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ User Clicks "Upload Photo" │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Open Upload Dialog │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Drag & Drop or Browse │ │ │ │ (Max 10 photos) │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ For Each Photo: │ │ │ │ • Validate format │ │ │ │ • Check file size │ │ │ │ • Show preview │ │ │ │ • Optional: Edit/Crop │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Click "Upload" │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Get CloudFlare Direct │ │ │ │ Upload URL │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Upload to CloudFlare │ │ │ │ (Show progress) │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Create Photo Submission │ │ │ │ (Status: Pending) │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ → Moderation Queue │ │ │ │ Photo visible after │ │ │ │ approval │ │ │ └───────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Engagement Flows ### Write Review Flow ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ User on Park/Ride Page │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Click "Write Review" │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ┌───────────┴───────────┐ │ │ ▼ ▼ │ │ ┌─────────────┐ ┌───────────────┐ │ │ │ Logged In │ │ Not Logged In │ │ │ └──────┬──────┘ └───────┬───────┘ │ │ │ │ │ │ │ ▼ │ │ │ ┌───────────────────┐ │ │ │ │ Redirect to Login │ │ │ │ │ (Return after) │ │ │ │ └───────────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Check Existing Review │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ┌───────────┴───────────┐ │ │ ▼ ▼ │ │ ┌─────────────┐ ┌───────────────┐ │ │ │ Has Review │ │ No Review │ │ │ │ (Edit mode) │ │ (Create mode) │ │ │ └──────┬──────┘ └───────┬───────┘ │ │ │ │ │ │ └──────────┬──────────┘ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Review Form │ │ │ │ • Star rating (1-5) │ │ │ │ • Written review text │ │ │ │ • "Experienced recently" │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Submit Review │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Review Visible │ │ │ │ (No moderation for │ │ │ │ reviews by default) │ │ │ └───────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` ### Log Ride Credit Flow ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ ENTRY POINTS │ │ │ ├───────────────┬───────────────┬─────────────────────────┤ │ │ │ Ride Page │ Credits Page │ Quick Add │ │ │ │ "Log Credit" │ "Add Credit" │ (Previously │ │ │ │ Button │ Button │ logged rides) │ │ │ └───────┬───────┴───────┬───────┴───────────┬─────────────┘ │ │ │ │ │ │ │ ▼ ▼ │ │ │ ┌──────────────────────────────────┐ │ │ │ │ RIDE SEARCH (if not from ride) │ │ │ │ │ • Search by name │ │ │ │ │ • Filter by park │ │ │ │ │ • Recent rides shown │ │ │ │ └──────────────┬───────────────────┘ │ │ │ │ │ │ │ └───────────────────────────┤ │ │ ▼ │ │ ┌────────────────────────────────┐ │ │ │ CREDIT DETAILS │ │ │ │ • Ride count (default: 1) │ │ │ │ • Date (optional) │ │ │ │ • Notes (optional) │ │ │ └────────────────┬───────────────┘ │ │ │ │ │ ▼ │ │ ┌────────────────────────────────┐ │ │ │ SAVE CREDIT │ │ │ └────────────────┬───────────────┘ │ │ │ │ │ ┌───────────────┴───────────────┐ │ │ ▼ ▼ │ │ ┌──────────────┐ ┌──────────────┐ │ │ New Credit │ │ Update │ │ │ Created │ │ Existing │ │ └──────────────┘ └──────────────┘ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ QUICK INCREMENT │ │ │ │ On credit card: [−] 12 [+] │ │ │ │ Instantly updates count without dialog │ │ │ └─────────────────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Moderation Flows ### Moderator Queue Workflow ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ Moderator Opens Queue │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ View Pending Items │ │ │ │ (Sorted by priority/age) │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Apply Filters │ │ │ │ • Type (park/ride/etc) │ │ │ │ • Status │ │ │ │ • Priority │ │ │ │ • Assigned to me │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Select Item to Review │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ CLAIM ITEM │ │ │ │ • Locks for 30 mins │ │ │ │ • Others can't claim │ │ │ │ • Can unclaim if needed │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────────────────────────────────┐ │ │ │ REVIEW INTERFACE │ │ │ ├───────────────────────┬───────────────────────────────┤ │ │ │ CURRENT DATA │ PROPOSED CHANGES │ │ │ │ │ │ │ │ │ Name: Cedar Point │ Name: Cedar Point │ │ │ │ Status: Open │ Status: Open │ │ │ │ Rides: 72 │ Rides: 73 ← CHANGED │ │ │ │ Desc: ... │ Desc: ... (expanded) ← + │ │ │ │ │ │ │ │ └───────────────────────┴───────────────────────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Add Reviewer Notes │ │ │ │ (Internal notes for │ │ │ │ decision reasoning) │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ┌───────────┼───────────────────┐ │ │ ▼ ▼ ▼ │ │ ┌─────────┐ ┌─────────┐ ┌───────────────┐ │ │ │ APPROVE │ │ REJECT │ │ REQUEST │ │ │ │ ALL │ │ │ │ CHANGES │ │ │ └────┬────┘ └────┬────┘ └───────┬───────┘ │ │ │ │ │ │ │ │ ▼ ▼ │ │ │ ┌───────────────┐ ┌───────────────┐ │ │ │ │ Notify User │ │ Notify User │ │ │ │ │ (Rejected) │ │ (Changes │ │ │ │ │ │ │ Needed) │ │ │ │ └───────────────┘ └───────────────┘ │ │ │ │ │ ▼ │ │ ┌──────────────────────────────┐ │ │ │ APPROVAL PROCESSING │ │ │ │ • Edge function called │ │ │ │ • Transaction executed │ │ │ │ • Entity updated │ │ │ │ • Version created │ │ │ │ • User notified │ │ │ └──────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Admin Flows ### User Management Flow ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ Admin Opens User Management │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Search/Filter Users │ │ │ │ • By username/email │ │ │ │ • By role │ │ │ │ • By status │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ Select User │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────────────────────────────────┐ │ │ │ USER PROFILE VIEW │ │ │ │ │ │ │ │ Username: coasterFan123 │ │ │ │ Email: user@email.com │ │ │ │ Role: User │ │ │ │ Status: Active │ │ │ │ Joined: Jan 2024 │ │ │ │ │ │ │ │ Stats: 45 submissions, 12 reviews, 89 credits │ │ │ │ │ │ │ └───────────────────────────────────────────────────────┘ │ │ │ │ │ ┌───────────┼───────────────────┬───────────────────┐ │ │ ▼ ▼ ▼ ▼ │ │ ┌─────────┐ ┌─────────┐ ┌───────────┐ ┌───────────┐ │ │ │ Change │ │ Ban │ │ Unban │ │ Delete │ │ │ │ Role │ │ User │ │ User │ │ User │ │ │ └────┬────┘ └────┬────┘ └─────┬─────┘ └─────┬─────┘ │ │ │ │ │ │ │ │ ▼ ▼ ▼ ▼ │ │ ┌─────────┐ ┌───────────────┐ ┌───────────┐ ┌───────────────┐ │ │ │ Select │ │ Enter Reason │ │ Confirm │ │ Confirm │ │ │ │ New Role│ │ Set Duration │ │ Unban │ │ (Irreversible)│ │ │ └────┬────┘ └───────┬───────┘ └─────┬─────┘ └───────┬───────┘ │ │ │ │ │ │ │ │ └──────────────┼───────────────┼────────────────┘ │ │ ▼ │ │ ┌───────────────────┐ │ │ │ Action Logged │ │ │ │ (Audit Trail) │ │ │ └───────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Notification Flow ``` ┌─────────────────────────────────────────────────────────────────┐ │ │ │ ┌─────────────────────────────────────────────────────────┐ │ │ │ EVENT TRIGGERS │ │ │ ├──────────────┬──────────────┬──────────────┬────────────┤ │ │ │ Submission │ Review │ Social │ System │ │ │ │ Status │ Response │ Interaction │ Alert │ │ │ │ Changed │ │ │ │ │ │ └──────┬───────┴──────┬───────┴──────┬───────┴──────┬─────┘ │ │ │ │ │ │ │ │ └──────────────┴──────────────┴──────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ CHECK USER PREFERENCES │ │ │ │ • Notification enabled? │ │ │ │ • Email enabled? │ │ │ │ • In-app enabled? │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ┌───────────────────┼───────────────────┐ │ │ ▼ ▼ ▼ │ │ ┌───────────┐ ┌───────────────┐ ┌───────────┐ │ │ │ In-App │ │ Email │ │ None │ │ │ │ Only │ │ + In-App │ │ (Opted │ │ │ │ │ │ │ │ Out) │ │ │ └─────┬─────┘ └───────┬───────┘ └───────────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌───────────┐ ┌───────────────┐ │ │ │ NOVU │ │ NOVU │ │ │ │ In-App │ │ Email + App │ │ │ │ Channel │ │ Channels │ │ │ └─────┬─────┘ └───────┬───────┘ │ │ │ │ │ │ └────────────────────┤ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ NOTIFICATION DELIVERED │ │ │ └─────────────┬─────────────┘ │ │ │ │ │ ┌───────────────────┴───────────────────┐ │ │ ▼ ▼ │ │ ┌───────────────┐ ┌───────────────┐ │ │ │ NOTIFICATION │ │ EMAIL │ │ │ │ BELL │ │ INBOX │ │ │ │ (🔔 Badge) │ │ │ │ │ └───────┬───────┘ └───────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────────────────┐ │ │ │ NOTIFICATION FEED │ │ │ │ • Mark as read │ │ │ │ • Click to navigate │ │ │ │ • Mark all as read │ │ │ └───────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## Related Documentation - [Site Overview](./SITE_OVERVIEW.md) - [Design System](./DESIGN_SYSTEM.md) - [Pages](./PAGES.md) - [Components](./COMPONENTS.md)