mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-27 12:07:04 -05:00
1176 lines
30 KiB
Markdown
1176 lines
30 KiB
Markdown
|
|
# **ThrillWiki: Complete Feature List**
|
|
|
|
## **1. HOMEPAGE & DISCOVERY**
|
|
|
|
### 1.1 Hero Search
|
|
- **Autocomplete Search Bar**: As you type, suggestions appear for parks, rides, and companies matching your query
|
|
- **Recent Searches**: Previously searched items are saved and shown for quick access
|
|
- **Search Categories**: Results are grouped by type (parks, rides, companies)
|
|
|
|
### 1.2 Content Discovery Tabs
|
|
The homepage displays curated content across **11 different discovery tabs**:
|
|
- **Trending Parks**: Parks with the most page views in the last 30 days
|
|
- **Trending Rides**: Rides with the most page views in the last 30 days
|
|
- **New Parks**: Most recently added parks to the database
|
|
- **New Rides**: Most recently added rides to the database
|
|
- **Recent Changes**: Latest edits and updates across all entities
|
|
- **Top Parks**: Highest-rated parks by user reviews
|
|
- **Top Rides**: Highest-rated rides by user reviews
|
|
- **Opening Soon**: Parks and rides with upcoming opening dates
|
|
- **Recently Opened**: Parks and rides that just opened
|
|
- **Closing Soon**: Parks and rides announced to close
|
|
- **Recently Closed**: Parks and rides that have recently closed
|
|
|
|
### 1.3 Recent Changes Feed
|
|
- Shows entity type, name, change type (created/updated)
|
|
- Displays who made the change and when
|
|
- Links directly to the changed entity's page
|
|
- Handles deleted entities gracefully
|
|
|
|
---
|
|
|
|
## **2. PARKS**
|
|
|
|
### 2.1 Parks Listing Page
|
|
- **Grid and List Views**: Toggle between card grid or compact list display
|
|
- **Search**: Find parks by name, description, or location
|
|
- **Extensive Filtering**:
|
|
- Park type (theme park, amusement park, water park, etc.)
|
|
- Operating status (operating, seasonal, closed, etc.)
|
|
- Country, state/province, city
|
|
- Operators and property owners
|
|
- Rating range (minimum to maximum)
|
|
- Ride count range
|
|
- Coaster count range
|
|
- Review count range
|
|
- Opening year range
|
|
- Opening date range
|
|
- Closing soon flag
|
|
- Closing date range
|
|
- **Sorting Options**: Name, rating, ride count, opening date, etc.
|
|
- **Collapsible Sidebar**: Save screen space by hiding filters
|
|
- **Pagination**: Navigate through pages of results
|
|
- **Add Park Button**: Opens submission form (requires sign-in)
|
|
|
|
### 2.2 Parks Nearby Page
|
|
- **Geolocation**: Uses your device's location to find nearby parks
|
|
- **Location Search**: Search for any city, postal code, or address to center search
|
|
- **Adjustable Radius**: Select search radius from 25km to unlimited
|
|
- **Unit System Toggle**: Switch between metric (km) and imperial (miles)
|
|
- **Interactive Map**:
|
|
- Shows all parks within radius as markers
|
|
- Markers cluster when zoomed out
|
|
- Click markers to see park preview
|
|
- Your location shown with accuracy radius
|
|
- **Distance Display**: Each park shows distance from your location
|
|
- **Sorting**: Sort by distance or alphabetically
|
|
|
|
### 2.3 Park Detail Page
|
|
- **Hero Banner**: Large banner image with park name and status overlay
|
|
- **Quick Stats Cards**: Total rides, roller coasters, reviews, opening date
|
|
- **Status Badges**: Shows operating status and park type
|
|
- **Location Display**: City, state, country with formatted display
|
|
- **Closing Banner**: Warning banner if park is announced to close
|
|
- **Version Indicator**: Shows version number with history access
|
|
- **Breadcrumb Navigation**: Hierarchical navigation back to parks list
|
|
|
|
**Tabs on Park Detail:**
|
|
- **Overview Tab**:
|
|
- Park description (expandable if long)
|
|
- Contact information (phone, website, email)
|
|
- Operating hours and seasonal dates
|
|
- Location map (OpenStreetMap embed)
|
|
- "Best Rated Rides" section showing top-rated rides at this park
|
|
- Operator and property owner information with preview hover cards
|
|
- **Rides Tab**: All rides at this park in a grid
|
|
- **Reviews Tab**:
|
|
- Average rating display
|
|
- Rating distribution histogram
|
|
- Review list with pagination
|
|
- Write review button (opens form)
|
|
- **Photos Tab**: Community-submitted photos gallery
|
|
- **History Tab**: Complete edit history and timeline events
|
|
|
|
### 2.4 Park Rides Page
|
|
- Dedicated page showing all rides at a specific park
|
|
- Same filtering and sorting as main rides page
|
|
- Shows ride cards with ratings and status
|
|
|
|
---
|
|
|
|
## **3. RIDES**
|
|
|
|
### 3.1 Rides Listing Page
|
|
- **Grid and List Views**: Toggle between views
|
|
- **Search**: Find rides by name or description
|
|
- **Comprehensive Filtering**:
|
|
- Category (roller coaster, flat ride, water ride, dark ride, etc.)
|
|
- Status (operating, under construction, defunct, SBNO, etc.)
|
|
- Park selection
|
|
- Country and location
|
|
- Manufacturer
|
|
- Designer
|
|
- Ride model
|
|
- Intensity level
|
|
- Wetness level (dry, splash, soaking, etc.)
|
|
- Rotation type (stationary, spinning, etc.)
|
|
- Transport type (chain lift, launch, etc.)
|
|
- Accessibility features
|
|
- Rating range
|
|
- Speed range
|
|
- Height range
|
|
- Length range
|
|
- Drop range
|
|
- Duration range
|
|
- Inversion count range
|
|
- Opening date range
|
|
- Closing date range
|
|
- **Sorting**: By name, rating, speed, height, length, drop, duration, inversions
|
|
- **Pagination**
|
|
- **Add Ride Button**: Opens submission form
|
|
|
|
### 3.2 Ride Detail Page
|
|
- **Hero Banner**: Banner image with ride name, status, and park name overlay
|
|
- **SBNO Banner**: Special alert if ride is "Standing But Not Operating"
|
|
- **Closing Banner**: Warning if ride is closing
|
|
- **Quick Stats Cards**: Speed, height, length, duration, capacity, inversions, drop, G-force
|
|
- **Park Link**: Hover shows park preview card
|
|
- **Version Indicator**
|
|
|
|
**Tabs on Ride Detail:**
|
|
- **Overview Tab**:
|
|
- Description
|
|
- Ride highlights (thrill features, records, unique elements)
|
|
- Former names history (if renamed)
|
|
- Similar rides suggestions
|
|
- Recent photos preview
|
|
- Manufacturer and designer information with hover cards
|
|
- Ride model link if applicable
|
|
- Location map
|
|
- **Specifications Tab**:
|
|
- All technical specifications in organized sections
|
|
- Measurements displayed in user's preferred units
|
|
- Height requirements
|
|
- Capacity information
|
|
- Accessibility notes
|
|
- Roller coaster-specific stats (track type, elements, etc.)
|
|
- **Reviews Tab**: Same as parks
|
|
- **Photos Tab**: Community photos
|
|
- **History Tab**: Edit history and timeline
|
|
|
|
---
|
|
|
|
## **4. COMPANIES**
|
|
|
|
Companies are categorized into four types with separate listing and detail pages:
|
|
|
|
### 4.1 Manufacturers
|
|
- Companies that build rides
|
|
- Listing with filtering by country, status
|
|
- Detail page showing:
|
|
- Company description
|
|
- Contact information
|
|
- Website
|
|
- Rides they manufactured (with link to full list)
|
|
- Ride models they produce (with link to full list)
|
|
|
|
### 4.2 Designers
|
|
- Companies that design rides
|
|
- Listing and detail pages
|
|
- Detail page shows rides they designed
|
|
|
|
### 4.3 Operators
|
|
- Companies that operate parks
|
|
- Listing and detail pages
|
|
- Detail page shows parks they operate
|
|
|
|
### 4.4 Property Owners
|
|
- Companies or entities that own parks
|
|
- Listing and detail pages
|
|
- Detail page shows parks they own
|
|
|
|
### 4.5 Company Hover Cards
|
|
- Throughout the app, company names show preview cards on hover
|
|
- Preview includes logo, type, headquarters location, and key stats
|
|
|
|
---
|
|
|
|
## **5. RIDE MODELS**
|
|
|
|
### 5.1 Manufacturer Models Page
|
|
- Accessed from manufacturer detail page
|
|
- Lists all ride models that manufacturer produces
|
|
- Shows model name, description, and count of installations
|
|
|
|
### 5.2 Ride Model Detail Page
|
|
- Model description and specifications
|
|
- Template specifications that all installations share
|
|
- List of all rides of this model worldwide
|
|
- Photo gallery
|
|
- History timeline
|
|
|
|
---
|
|
|
|
## **6. SEARCH**
|
|
|
|
### 6.1 Global Search Page
|
|
- Full-page search with larger result area
|
|
- Type tabs: All, Parks, Rides, Companies
|
|
- Result counts per type
|
|
|
|
### 6.2 Search Filtering
|
|
- **Location Filters**: Country, state/province
|
|
- **Rating Range**: Minimum and maximum
|
|
- **Toggle Filters Panel**: Show/hide for more screen space
|
|
|
|
### 6.3 Search Sorting
|
|
- Relevance
|
|
- Name
|
|
- Rating
|
|
- Review count
|
|
- Ride count (for parks)
|
|
- Opening date
|
|
|
|
### 6.4 Search Results
|
|
- Rich result cards with images, ratings, and type indicators
|
|
- Quick actions per result
|
|
- Empty state with suggestions
|
|
|
|
---
|
|
|
|
## **7. USER AUTHENTICATION**
|
|
|
|
### 7.1 Sign In Options
|
|
- **Email/Password**: Traditional login
|
|
- **Magic Link**: Passwordless email sign-in
|
|
- **Google OAuth**: Sign in with Google
|
|
- **Discord OAuth**: Sign in with Discord
|
|
|
|
### 7.2 Sign Up
|
|
- Email, password, username, display name
|
|
- CAPTCHA verification (Cloudflare Turnstile)
|
|
- Email confirmation required
|
|
|
|
### 7.3 Multi-Factor Authentication (MFA)
|
|
- TOTP-based (authenticator app)
|
|
- Required for admin and moderator accounts
|
|
- MFA challenge modal during login
|
|
- Session AAL (Authentication Assurance Level) tracking
|
|
|
|
### 7.4 Account Security Features
|
|
- Session management (view/revoke active sessions)
|
|
- Password change with old password verification
|
|
- Add password to OAuth-only accounts
|
|
- Ban detection on login (prevents banned users)
|
|
- Storage warning (if localStorage disabled)
|
|
|
|
---
|
|
|
|
## **8. USER PROFILE**
|
|
|
|
### 8.1 Profile Page
|
|
- **Profile Header**: Avatar, display name, username, join date
|
|
- **Profile Bio**: User description
|
|
- **Location Display** (if privacy allows)
|
|
- **Role Badge**: Displays if moderator/admin
|
|
- **Edit Profile Button** (own profile only)
|
|
- **Block User Button** (other profiles)
|
|
|
|
### 8.2 Profile Statistics
|
|
- Unique ride credits
|
|
- Total rides taken
|
|
- Parks visited
|
|
- Coasters ridden
|
|
|
|
### 8.3 Profile Tabs
|
|
- **Activity Tab**:
|
|
- Recent submissions (parks, rides, photos, etc.)
|
|
- Recent rankings/lists
|
|
- Recent reviews
|
|
- Recent ride credits added
|
|
- Each activity shows status (pending, approved, rejected)
|
|
- **Reviews Tab**: All user's reviews
|
|
- **Lists Tab**: User's custom lists
|
|
- **Ride Credits Tab**: User's ride history
|
|
|
|
### 8.4 Profile Editing
|
|
- Change display name
|
|
- Change username (with confirmation dialog - limited changes)
|
|
- Update bio
|
|
- Upload/change avatar photo
|
|
- Profile shows preview in real-time
|
|
|
|
---
|
|
|
|
## **9. USER SETTINGS**
|
|
|
|
### 9.1 Account & Profile Tab
|
|
- View/change email address (requires verification)
|
|
- View linked authentication providers
|
|
- Profile picture management
|
|
- Display name editing
|
|
|
|
### 9.2 Security Tab
|
|
- Password management
|
|
- Change existing password
|
|
- Add password to OAuth account
|
|
- Multi-Factor Authentication
|
|
- Enroll new TOTP authenticator
|
|
- View enrolled factors
|
|
- Remove MFA factors
|
|
- Active Sessions
|
|
- View all logged-in devices/browsers
|
|
- Revoke individual sessions
|
|
- Session shows device info, location, last active
|
|
|
|
### 9.3 Privacy Tab
|
|
- Profile visibility (public, registered users only, private)
|
|
- Location visibility
|
|
- Show/hide email on profile
|
|
- Data deletion options
|
|
|
|
### 9.4 Notifications Tab
|
|
- Email notification preferences
|
|
- In-app notification preferences
|
|
- Digest frequency settings
|
|
- Notification rate limiting
|
|
|
|
### 9.5 Location & Info Tab
|
|
- Personal location (displayed on profile)
|
|
- Home park selection
|
|
- Timezone setting
|
|
- Biography/about text
|
|
|
|
### 9.6 Data & Export Tab
|
|
- **Data Export**: Download all your data as JSON
|
|
- Profile information
|
|
- Reviews
|
|
- Ride credits
|
|
- Lists
|
|
- Submissions
|
|
- **Account Deletion**:
|
|
- Request account deletion
|
|
- 7-day grace period
|
|
- Email verification required
|
|
- Cancel pending deletion
|
|
- Scheduled deletion date shown
|
|
|
|
---
|
|
|
|
## **10. RIDE CREDITS (RIDE COUNT TRACKING)**
|
|
|
|
### 10.1 Credits Overview
|
|
- Total ride count (sum of all rides taken)
|
|
- Unique credits (unique rides)
|
|
- Parks visited
|
|
- Coasters ridden
|
|
|
|
### 10.2 Credit Cards
|
|
- Each credit shows:
|
|
- Ride name and park
|
|
- Ride category and type icons
|
|
- First ride date
|
|
- Total ride count
|
|
- User rating
|
|
- Personal notes
|
|
- Card/banner image
|
|
|
|
### 10.3 Credit Management
|
|
- **Add Credit**: Search and select ride, enter date and count
|
|
- **Edit Credit**: Update count, date, notes
|
|
- **Delete Credit**: Remove with confirmation
|
|
- **Reorder Credits**: Drag-and-drop to arrange custom order
|
|
|
|
### 10.4 Credit Filtering
|
|
- By category (roller coaster, flat ride, etc.)
|
|
- By park
|
|
- By manufacturer
|
|
- By country/region
|
|
- By ride status
|
|
- By intensity level
|
|
|
|
### 10.5 Credit Sorting
|
|
- Custom order (manual arrangement)
|
|
- Date (first ride date)
|
|
- Count (times ridden)
|
|
- Alphabetical
|
|
|
|
### 10.6 Credit Views
|
|
- Grid view (card layout)
|
|
- List view (compact table)
|
|
- Edit mode (drag handles visible)
|
|
|
|
---
|
|
|
|
## **11. USER LISTS (RANKINGS)**
|
|
|
|
### 11.1 List Creation
|
|
- Title and description
|
|
- List type (parks, rides, coasters, companies, or mixed)
|
|
- Public/private visibility toggle
|
|
|
|
### 11.2 List Types
|
|
- Parks only
|
|
- Rides only
|
|
- Coasters only
|
|
- Companies only
|
|
- Mixed (any combination)
|
|
|
|
### 11.3 List Item Management
|
|
- Search and add items
|
|
- Add personal notes per item
|
|
- Reorder items by dragging
|
|
- Remove items
|
|
- Automatic position numbering
|
|
|
|
### 11.4 List Display
|
|
- Numbered ranking display
|
|
- Entity images and basic info
|
|
- Notes visible
|
|
- Links to entity pages
|
|
|
|
### 11.5 List Visibility
|
|
- Toggle public/private per list
|
|
- Eye icon indicates current visibility
|
|
- Private lists only visible to owner
|
|
|
|
---
|
|
|
|
## **12. REVIEWS & RATINGS**
|
|
|
|
### 12.1 Review Creation
|
|
- Star rating (1-5 stars, half-star precision)
|
|
- Review title
|
|
- Review content (text body)
|
|
- Submit for moderation
|
|
|
|
### 12.2 Reviews Display
|
|
- Star rating visualization
|
|
- Reviewer info (username, avatar)
|
|
- Review date
|
|
- Review content
|
|
- Helpful vote count
|
|
|
|
### 12.3 Review Interaction
|
|
- **Helpful Vote**: Mark reviews as helpful
|
|
- **Edit**: Edit your own reviews
|
|
- **Delete**: Delete your own reviews
|
|
- Vote count display per review
|
|
|
|
### 12.4 Rating Statistics
|
|
- Average rating (displayed on entity pages)
|
|
- Review count
|
|
- Rating distribution chart (1-5 stars histogram)
|
|
- Rating shown on cards throughout app
|
|
|
|
### 12.5 Review Moderation
|
|
- All reviews go through moderation queue
|
|
- Approved reviews become visible
|
|
- Rejected reviews with reason sent to user
|
|
|
|
---
|
|
|
|
## **13. PHOTOS**
|
|
|
|
### 13.1 Photo Upload
|
|
- **Drag and Drop**: Drop files onto upload zone
|
|
- **File Browser**: Click to select files
|
|
- **Multiple Upload**: Upload up to 10 photos at once
|
|
- **Image Editor**: Crop, rotate, adjust before upload
|
|
- **Caption Editor**: Add captions to each photo
|
|
- **Progress Indicator**: Shows upload progress
|
|
|
|
### 13.2 Photo Gallery
|
|
- Grid layout with thumbnails
|
|
- Click to view full-size in modal
|
|
- Navigation between photos (prev/next)
|
|
- Photo credits shown
|
|
- Captions displayed
|
|
- "Set as Banner/Card" option for entity owners
|
|
|
|
### 13.3 Photo Management (Entity Pages)
|
|
- **Add Photos Button**: Opens upload dialog
|
|
- **Photo Management Dialog**:
|
|
- Delete photos
|
|
- Update captions
|
|
- Set as banner image
|
|
- Set as card image
|
|
|
|
### 13.4 Photo Submissions
|
|
- All photos go through moderation
|
|
- Submission preview shows thumbnails
|
|
- Batch approval/rejection
|
|
- Reviewer notes for rejections
|
|
|
|
---
|
|
|
|
## **14. CONTENT SUBMISSION SYSTEM**
|
|
|
|
### 14.1 The Sacred Pipeline
|
|
Every piece of user content follows this flow:
|
|
1. User fills out form
|
|
2. Submission record created
|
|
3. Enters moderation queue
|
|
4. Moderator claims submission
|
|
5. Review and approve/reject
|
|
6. If approved: entity version created, public content updated
|
|
7. Visible on site
|
|
|
|
### 14.2 Park Submission Form
|
|
- **Basic Info Section**:
|
|
- Name (required)
|
|
- Slug (auto-generated, editable)
|
|
- Description
|
|
- Park type dropdown
|
|
- Status dropdown
|
|
- **Location Section**:
|
|
- Location search (autocomplete)
|
|
- Or create new location inline
|
|
- Country, state, city, postal code
|
|
- Coordinates (latitude/longitude)
|
|
- Timezone
|
|
- **Dates Section**:
|
|
- Opening date (with precision: exact, month, year)
|
|
- Closing date (with precision)
|
|
- Is closing flag
|
|
- **Media Section**:
|
|
- Banner image upload
|
|
- Card image upload
|
|
- **Contact Section**:
|
|
- Phone
|
|
- Email
|
|
- Website
|
|
- **Relationships Section**:
|
|
- Operator (select or create new)
|
|
- Property owner (select or create new)
|
|
- **Moderation Section**:
|
|
- Submission notes (explain changes)
|
|
- Test data flag (for testing)
|
|
|
|
### 14.3 Ride Submission Form
|
|
- **Basic Info**:
|
|
- Name
|
|
- Slug
|
|
- Description
|
|
- Category dropdown
|
|
- Status dropdown
|
|
- **Park Selection**:
|
|
- Search existing parks
|
|
- Or create new park inline
|
|
- **Specifications** (all with unit conversion):
|
|
- Maximum speed
|
|
- Height
|
|
- Length
|
|
- Drop height
|
|
- Duration
|
|
- Capacity per hour
|
|
- Inversions count
|
|
- G-force
|
|
- Minimum height requirement
|
|
- **Ride Attributes**:
|
|
- Intensity level
|
|
- Wetness level
|
|
- Rotation type
|
|
- Transport type (lift type)
|
|
- Accessibility features
|
|
- **Roller Coaster Specific** (if category is coaster):
|
|
- Coaster type (steel, wood, hybrid)
|
|
- Seating type (sit-down, inverted, flying, etc.)
|
|
- Track layout (out and back, twister, etc.)
|
|
- Additional technical specs
|
|
- **Relationships**:
|
|
- Manufacturer (select or create)
|
|
- Designer (select or create)
|
|
- Ride model (select or create)
|
|
- **Dates**:
|
|
- Opening date with precision
|
|
- Closing date with precision
|
|
- **Media**:
|
|
- Banner and card images
|
|
- **Former Names**:
|
|
- Add name history with date ranges
|
|
- **Technical Specifications Editor**:
|
|
- Add custom specs (name, value, unit)
|
|
- Organized by categories
|
|
|
|
### 14.4 Company Submission Forms
|
|
Separate forms for each company type:
|
|
- Manufacturer form
|
|
- Designer form
|
|
- Operator form
|
|
- Property owner form
|
|
|
|
Each includes:
|
|
- Name and slug
|
|
- Description
|
|
- Company type
|
|
- Headquarters location
|
|
- Website
|
|
- Logo image
|
|
|
|
### 14.5 Ride Model Submission Form
|
|
- Model name
|
|
- Description
|
|
- Associated manufacturer
|
|
- Template specifications
|
|
- Photos
|
|
|
|
### 14.6 Composite Submissions
|
|
When creating a new entity that references another non-existent entity:
|
|
- Create new park inline while submitting ride
|
|
- Create new manufacturer inline while submitting ride
|
|
- Create new operator inline while submitting park
|
|
- All linked entities bundled into single submission
|
|
- Moderator can approve/reject individual parts
|
|
|
|
### 14.7 Form Features
|
|
- **Auto-save Drafts**: Work saved locally
|
|
- **JSON Import**: Import sample data or paste JSON
|
|
- **Sample Data Loading**: Pre-fill with example data
|
|
- **Unit System Toggle**: Switch between metric/imperial while editing
|
|
- **Unit Conversion Preview**: See both units in real-time
|
|
- **Field Validation**: Real-time error highlighting
|
|
- **Error Summary**: Collapsible list of all validation errors
|
|
- **Help Tooltips**: Explanations for complex fields
|
|
- **Submission Help Dialog**: Explains moderation process
|
|
|
|
---
|
|
|
|
## **15. VERSIONING & HISTORY**
|
|
|
|
### 15.1 Version Indicator
|
|
- Displayed on entity pages
|
|
- Shows version number
|
|
- Indicates last change date
|
|
- Click opens history panel
|
|
|
|
### 15.2 Entity History Tabs
|
|
- **Edit History Tab**:
|
|
- Chronological list of all versions
|
|
- Each version shows:
|
|
- Version number
|
|
- Change type (created, updated, deleted)
|
|
- User who made change
|
|
- Change timestamp
|
|
- Change reason
|
|
- Select two versions to compare
|
|
- "Restore" button (moderators only)
|
|
- **Timeline Tab**:
|
|
- Historical events for the entity
|
|
- Events like "renamed", "relocated", "record broken"
|
|
- Each event has date and description
|
|
|
|
### 15.3 Version Comparison
|
|
- Side-by-side field comparison
|
|
- Visual diff highlighting:
|
|
- Green: Added fields
|
|
- Red: Removed fields
|
|
- Yellow: Modified fields
|
|
- Old value vs new value display
|
|
- Handles complex fields (locations, specs)
|
|
|
|
### 15.4 Rollback/Restore
|
|
- Moderators can restore previous versions
|
|
- Creates new submission for review
|
|
- Audit trail maintained
|
|
|
|
---
|
|
|
|
## **16. MODERATION SYSTEM**
|
|
|
|
### 16.1 Moderation Queue
|
|
- **Queue Statistics Cards**:
|
|
- Pending submissions count
|
|
- Pending reports count
|
|
- Flagged content count
|
|
- **Queue Tabs**:
|
|
- Moderation (submissions)
|
|
- Reports (user reports)
|
|
- Activity (recent actions)
|
|
|
|
### 16.2 Queue Filtering
|
|
- Entity type (all, parks, rides, companies, etc.)
|
|
- Status (pending, approved, rejected)
|
|
- Date range
|
|
- Submitter
|
|
|
|
### 16.3 Queue Sorting
|
|
- Created date
|
|
- Priority
|
|
- Submitter
|
|
- Type
|
|
|
|
### 16.4 Queue Items Display
|
|
Each item shows:
|
|
- Submitter username and avatar
|
|
- Submission type badge
|
|
- Entity name
|
|
- Action type (create/edit)
|
|
- Created timestamp
|
|
- Status badge
|
|
- Lock indicator (if claimed)
|
|
- Preview of changes
|
|
|
|
### 16.5 Claim System
|
|
- Moderator must claim submission before acting
|
|
- Claim lock shown to other moderators
|
|
- Lock expires after 30 minutes
|
|
- Force release available for admins
|
|
- Prevents conflicts between moderators
|
|
|
|
### 16.6 Submission Review
|
|
- **Full Data Preview**: See all submitted data
|
|
- **Change Diffs**: For edits, shows what changed
|
|
- **Field Comparison**: Side-by-side old/new values
|
|
- **Photo Preview**: Thumbnails of submitted photos
|
|
- **Location Preview**: Map for location changes
|
|
- **Validation Status**: Shows any validation warnings
|
|
|
|
### 16.7 Approval Actions
|
|
- **Approve All**: Approve entire submission
|
|
- **Selective Approval**: Approve specific items only
|
|
- **Reject All**: Reject entire submission
|
|
- **Selective Rejection**: Reject specific items
|
|
- **Request Changes**: Ask user for modifications
|
|
- **Reviewer Notes**: Add notes for decision
|
|
|
|
### 16.8 Bulk Operations
|
|
- Select multiple submissions
|
|
- Bulk approve selected
|
|
- Bulk reject selected
|
|
- Results dialog shows success/failure per item
|
|
|
|
### 16.9 Conversion Tool
|
|
- Convert "create" submission to "edit"
|
|
- When duplicate entity found
|
|
- Links to existing entity
|
|
- Preserves submitted data
|
|
|
|
### 16.10 Rejection Dialog
|
|
- Select rejection reason from presets
|
|
- Add custom notes
|
|
- Notification sent to submitter
|
|
|
|
### 16.11 Reports Queue
|
|
- User-submitted reports of content issues
|
|
- Report type (inaccurate, inappropriate, etc.)
|
|
- Report description
|
|
- Link to reported entity
|
|
- Actions: Dismiss, Take action, Escalate
|
|
|
|
### 16.12 Recent Activity
|
|
- Log of recent moderation actions
|
|
- Shows moderator, action, entity, timestamp
|
|
- Filterable by action type
|
|
|
|
### 16.13 Moderation Audit Log
|
|
- Complete audit trail
|
|
- All approval/rejection decisions
|
|
- Moderator identification
|
|
- Timestamps
|
|
- Notes and reasons
|
|
|
|
---
|
|
|
|
## **17. ADMIN FEATURES**
|
|
|
|
### 17.1 User Management
|
|
- **User List**: All users with search
|
|
- **User Details**: Profile, activity, roles
|
|
- **Role Management**:
|
|
- Assign roles: user, moderator, admin
|
|
- Role requires confirmation
|
|
- MFA requirement enforcement
|
|
- **User Actions**:
|
|
- Ban user (with reason)
|
|
- Unban user
|
|
- Delete user (with confirmation)
|
|
- View user's submissions
|
|
|
|
### 17.2 Admin Dashboard
|
|
- Overview statistics
|
|
- Pending queue counts
|
|
- System health indicators
|
|
- Quick access cards to sections
|
|
|
|
### 17.3 Admin Settings
|
|
- **Moderation Settings**:
|
|
- Auto-refresh mode (on/off)
|
|
- Polling interval
|
|
- Default sort order
|
|
- **Notification Settings**:
|
|
- Admin alert thresholds
|
|
- Email notification toggles
|
|
- **System Settings**:
|
|
- Maintenance mode toggle
|
|
- Feature flags
|
|
|
|
### 17.4 Blog Management
|
|
- Create blog posts
|
|
- Edit existing posts
|
|
- Publish/unpublish
|
|
- SEO settings per post
|
|
|
|
### 17.5 Support/Contact
|
|
- View contact form submissions
|
|
- Reply to messages
|
|
- Merge duplicate tickets
|
|
- Mark as resolved
|
|
|
|
### 17.6 Monitoring Hub
|
|
- **Overview**: System health dashboard
|
|
- **Database Stats**:
|
|
- Table sizes
|
|
- Row counts
|
|
- Growth trends
|
|
- Entity comparisons
|
|
- Top contributors
|
|
- Data quality metrics
|
|
- **Approval History**:
|
|
- Historical approval data
|
|
- Date range filtering
|
|
- Export functionality
|
|
- **Edge Function Logs**:
|
|
- Live logs from backend functions
|
|
- Filter by function name
|
|
- Search log content
|
|
- Error highlighting
|
|
|
|
### 17.7 Error Monitoring
|
|
- **Error Lookup**: Search errors by ID
|
|
- **Error List**: Recent errors with details
|
|
- **Error Details Modal**:
|
|
- Error message
|
|
- Stack trace
|
|
- User context
|
|
- Request metadata
|
|
- Submission links
|
|
|
|
### 17.8 Trace Viewer
|
|
- View distributed traces
|
|
- Span hierarchy visualization
|
|
- Timing breakdown
|
|
- Debug backend operations
|
|
|
|
### 17.9 Database Maintenance
|
|
- **Location Deduplication**: Find and merge duplicate locations
|
|
- **Orphaned Image Cleanup**: Remove unused uploaded images
|
|
- **Quick Undo Merge**: Rollback recent location merges
|
|
- **Data Retention Panel**: Manage data cleanup schedules
|
|
|
|
### 17.10 Database Manager
|
|
- Direct entity management (emergency use)
|
|
- Create entities bypassing moderation (emergency)
|
|
- Delete entities with cascade
|
|
- Reserved for critical fixes only
|
|
|
|
### 17.11 SEO Audit
|
|
- Check all entities for SEO issues
|
|
- Missing titles, descriptions
|
|
- Image alt text verification
|
|
- Slug validation
|
|
|
|
### 17.12 OG Tag Preview
|
|
- Preview Open Graph tags for any page
|
|
- Social media share previews
|
|
- Twitter card preview
|
|
- Debug missing data
|
|
|
|
### 17.13 OpenStreetMap Usage
|
|
- Track API usage
|
|
- Rate limit monitoring
|
|
- Quota tracking
|
|
|
|
---
|
|
|
|
## **18. ERROR HANDLING**
|
|
|
|
### 18.1 User Error Experience
|
|
- Generic error messages only
|
|
- "Something went wrong. Please try again."
|
|
- Reference ID provided for support
|
|
- No technical details exposed
|
|
|
|
### 18.2 Admin/Moderator Error Experience
|
|
- **Comprehensive Error Modal**:
|
|
- Full error message
|
|
- Stack trace
|
|
- Error classification
|
|
- Request context
|
|
- User information
|
|
- Submission IDs
|
|
- Suggested actions
|
|
|
|
### 18.3 Error Logging
|
|
- All errors logged to database
|
|
- Error monitoring dashboard
|
|
- Searchable by ID
|
|
- Context preservation
|
|
|
|
---
|
|
|
|
## **19. MAPS & LOCATION**
|
|
|
|
### 19.1 OpenStreetMap Integration
|
|
- Embedded maps on entity pages
|
|
- Interactive maps for nearby parks
|
|
- Map markers with popups
|
|
|
|
### 19.2 Location Search
|
|
- Autocomplete location search
|
|
- Results from OpenStreetMap Nominatim
|
|
- City, state, country extraction
|
|
- Coordinate extraction
|
|
|
|
### 19.3 Geolocation
|
|
- Browser geolocation support
|
|
- Accuracy display
|
|
- Permission handling
|
|
- Fallback for denied permission
|
|
|
|
### 19.4 Interactive Parks Map
|
|
- Leaflet-based interactive map
|
|
- Marker clustering
|
|
- Park preview popups
|
|
- User location marker
|
|
- Radius circle overlay
|
|
- Zoom controls
|
|
|
|
### 19.5 Location Enrichment
|
|
- Automatic timezone detection
|
|
- Country/state parsing
|
|
- Coordinate validation
|
|
|
|
---
|
|
|
|
## **20. MEASUREMENT UNITS**
|
|
|
|
### 20.1 Unit Preferences
|
|
- **Metric**: km/h, meters, centimeters, kilograms
|
|
- **Imperial**: mph, feet, inches, pounds
|
|
- Preference stored per-user
|
|
- Anonymous users: auto-detect by location
|
|
|
|
### 20.2 Unit Display
|
|
- All measurements shown in user's preferred units
|
|
- Automatic conversion from stored metric values
|
|
- Unit labels included
|
|
|
|
### 20.3 Form Unit Handling
|
|
- Input in either unit system
|
|
- Live conversion preview
|
|
- Stored always in metric
|
|
- Unit toggle in forms
|
|
|
|
### 20.4 Unit Types
|
|
- Speed (km/h ↔ mph)
|
|
- Distance (m ↔ ft)
|
|
- Large distance (km ↔ mi)
|
|
- Height/short (cm ↔ in)
|
|
- Weight (kg ↔ lbs)
|
|
|
|
---
|
|
|
|
## **21. NOTIFICATIONS**
|
|
|
|
### 21.1 In-App Notifications
|
|
- Notification bell in header
|
|
- Unread count badge
|
|
- Notification feed
|
|
- Mark as read/unread
|
|
- Click to navigate
|
|
|
|
### 21.2 Email Notifications
|
|
- Submission status updates
|
|
- Review responses
|
|
- Admin alerts
|
|
- System announcements
|
|
|
|
### 21.3 Notification Types
|
|
- Submission approved/rejected
|
|
- New review on your entity
|
|
- Role changes
|
|
- System alerts
|
|
|
|
### 21.4 Notification Preferences
|
|
- Per-notification-type toggles
|
|
- Email on/off
|
|
- In-app on/off
|
|
- Digest frequency
|
|
|
|
---
|
|
|
|
## **22. BLOG**
|
|
|
|
### 22.1 Blog Index
|
|
- List of published posts
|
|
- Featured image
|
|
- Excerpt
|
|
- Author and date
|
|
- Categories/tags
|
|
|
|
### 22.2 Blog Post Page
|
|
- Full content
|
|
- Author information
|
|
- Related posts
|
|
- Social sharing
|
|
|
|
### 22.3 Blog Admin
|
|
- Create/edit posts
|
|
- Draft/publish status
|
|
- Scheduled publishing
|
|
- SEO settings
|
|
|
|
---
|
|
|
|
## **23. STATIC PAGES**
|
|
|
|
### 23.1 Terms of Service
|
|
- Legal terms
|
|
- Formatted content
|
|
|
|
### 23.2 Privacy Policy
|
|
- Data handling explanation
|
|
- Cookie policy
|
|
- User rights
|
|
|
|
### 23.3 Submission Guidelines
|
|
- How to contribute
|
|
- Quality standards
|
|
- Moderation process explanation
|
|
- Tips for approval
|
|
|
|
### 23.4 Contact Page
|
|
- Contact form
|
|
- Support information
|
|
- Response time expectations
|
|
|
|
---
|
|
|
|
## **24. REPORTING SYSTEM**
|
|
|
|
### 24.1 Report Button
|
|
- Available on entities and reviews
|
|
- Opens report dialog
|
|
|
|
### 24.2 Report Types
|
|
- Inaccurate information
|
|
- Inappropriate content
|
|
- Duplicate entry
|
|
- Spam
|
|
- Other
|
|
|
|
### 24.3 Report Form
|
|
- Report type selection
|
|
- Description field
|
|
- Submit button
|
|
|
|
### 24.4 Report Processing
|
|
- Appears in admin reports queue
|
|
- Review and action
|
|
- Close report
|
|
|
|
---
|
|
|
|
## **25. THEME & UI**
|
|
|
|
### 25.1 Light/Dark Mode
|
|
- System preference detection
|
|
- Manual toggle
|
|
- Persisted preference
|
|
- Smooth transition
|
|
|
|
### 25.2 Responsive Design
|
|
- Mobile-optimized layouts
|
|
- Touch-friendly interactions
|
|
- Collapsible sidebars on mobile
|
|
- Swipeable tab content
|
|
- Mobile-specific navigation
|
|
|
|
### 25.3 Loading States
|
|
- Skeleton loaders for content
|
|
- Loading spinners for actions
|
|
- Progress indicators for uploads
|
|
- Shimmer effects
|
|
|
|
### 25.4 Empty States
|
|
- Friendly illustrations
|
|
- Helpful messages
|
|
- Action suggestions
|
|
|
|
---
|
|
|
|
## **26. SEO & SHARING**
|
|
|
|
### 26.1 Open Graph Tags
|
|
- Dynamic OG images
|
|
- Page-specific titles
|
|
- Descriptions
|
|
- Type metadata
|
|
|
|
### 26.2 URL Structure
|
|
- `/parks` - Parks listing
|
|
- `/parks/{slug}` - Park detail
|
|
- `/parks/{slug}/rides` - Park's rides
|
|
- `/parks/{slug}/rides/{slug}` - Ride at park
|
|
- `/parks/nearby` - Nearby parks
|
|
- `/rides` - Rides listing
|
|
- `/manufacturers` - Manufacturer listing
|
|
- `/manufacturers/{slug}` - Manufacturer detail
|
|
- `/manufacturers/{slug}/rides` - Manufacturer's rides
|
|
- `/manufacturers/{slug}/models` - Manufacturer's models
|
|
- `/manufacturers/{slug}/models/{slug}` - Model detail
|
|
- `/designers`, `/owners`, `/operators` - Similar patterns
|
|
- `/profile/{username}` - User profile
|
|
- `/settings` - User settings
|
|
- `/admin` - Admin dashboard
|
|
- `/search` - Search page
|
|
- `/blog` - Blog
|
|
|
|
### 26.3 Sitemap
|
|
- Dynamic sitemap generation
|
|
- All entities included
|
|
- Priority settings
|
|
|
|
---
|
|
|
|
## **27. PERFORMANCE**
|
|
|
|
### 27.1 Lazy Loading
|
|
- Pages lazy loaded on navigation
|
|
- Images lazy loaded on scroll
|
|
- Tabs load content on activation
|
|
|
|
### 27.2 Caching
|
|
- React Query data caching
|
|
- Stale-while-revalidate
|
|
- Optimistic updates
|
|
|
|
### 27.3 Prefetching
|
|
- Route prefetching on hover
|
|
- Related data prefetching
|
|
- Search result preloading
|
|
|
|
---
|
|
|
|
## **28. ACCESSIBILITY**
|
|
|
|
### 28.1 Keyboard Navigation
|
|
- Full keyboard support
|
|
- Focus indicators
|
|
- Tab order management
|
|
|
|
### 28.2 Screen Reader Support
|
|
- Semantic HTML
|
|
- ARIA labels
|
|
- Alt text for images
|
|
- Announcements for updates
|
|
|
|
### 28.3 Visual Accessibility
|
|
- High contrast modes
|
|
- Scalable text
|
|
- Color not sole indicator
|
|
|
|
---
|