mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-27 17:27:01 -05:00
882 lines
76 KiB
Markdown
882 lines
76 KiB
Markdown
# 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)
|