
# **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

---
