Files
thrillwiki_django_no_react/specs/FULL_SPECIFICATION.md

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