feat: Add user leaderboard API, Cloudflare Turnstile integration, and support ticket categorization.

This commit is contained in:
pacnpal
2025-12-27 15:41:10 -05:00
parent 137b9b8cb9
commit aa56c46c27
11 changed files with 656 additions and 428 deletions

View File

@@ -1,412 +1,354 @@
# GAP_ANALYSIS_MATRIX.md
# ThrillWiki Gap Analysis Matrix
> Full Project Synchronization: Source Docs vs. Codebase Comparison
> Generated: 2025-12-26
> **Generated:** 2025-12-27 | **Source:** Fresh ground-zero audit of `source_docs/` vs. actual codebase
This matrix documents every requirement extracted from the 5 source documentation files and their verification status against the Django backend (`backend/apps/`) and Nuxt frontend (`frontend/app/`).
**Legend:**
-**[OK]** - Implemented as specified
- ⚠️ **[DEVIATION]** - Implemented but differs from spec
-**[MISSING]** - Not implemented
---
## 1. SITE_OVERVIEW.md
| Feature | Source Doc | Current Status | Action Required |
|---------|------------|----------------|-----------------|
| Homepage with Hero Search | SITE_OVERVIEW.md §Homepage | ✅ [OK] | `frontend/app/pages/index.vue` has hero search |
| Discovery Tabs (11 categories) | SITE_OVERVIEW.md §Homepage | ✅ [OK] | `frontend/app/pages/discover.vue` implements tabs |
| Recent Changes Feed | SITE_OVERVIEW.md §Homepage | ✅ [OK] | Backend `apps/core/history` provides timeline data |
| Global Search | SITE_OVERVIEW.md §Core Features | ✅ [OK] | `GlobalSearch.vue` component exists |
| Parks Nearby with Map | SITE_OVERVIEW.md §Core Features | ✅ [OK] | `pages/parks/nearby.vue` with Leaflet |
| Advanced Filters | SITE_OVERVIEW.md §Core Features | ✅ [OK] | Filter components on parks/rides pages |
| Trending Content | SITE_OVERVIEW.md §Core Features | ⚠️ [DEVIATION] | Backend has `trending_parks` endpoint but no dedicated "Trending" UI section |
| Detailed Park Pages with Tabs | SITE_OVERVIEW.md §Parks | ✅ [OK] | Overview/Rides/Reviews/Photos/History tabs |
| Ride Specifications | SITE_OVERVIEW.md §Rides | ✅ [OK] | `Ride` model has full spec fields |
| Company Profiles | SITE_OVERVIEW.md §Companies | ✅ [OK] | `/manufacturers`, `/operators`, `/designers`, `/owners` pages |
| Ride Models | SITE_OVERVIEW.md §Ride Models | ✅ [OK] | `RideModel` model + `/ride-models` pages |
| Photo Galleries | SITE_OVERVIEW.md §Photos | ✅ [OK] | `PhotoGallery.vue` + `GalleryUploader.vue` |
| Version History / Historical Records | SITE_OVERVIEW.md §History | ✅ [OK] | `pghistory` tracking on models + History tab |
| Reviews & Ratings | SITE_OVERVIEW.md §Community | ✅ [OK] | `apps/reviews` + Review components |
| Ride Credits | SITE_OVERVIEW.md §Community | ✅ [OK] | `RideCredit` model + `/my-credits` page |
| Personal Lists | SITE_OVERVIEW.md §Community | ✅ [OK] | `apps/lists` + `/lists` pages |
| Leaderboards | SITE_OVERVIEW.md §Community | ❌ [MISSING] | No leaderboard page or backend endpoint exists |
| Badges / Achievement System | SITE_OVERVIEW.md §Community | ⚠️ [DEVIATION] | `User.badges` field exists in model but no UI to display/earn badges |
| Submit New Content | SITE_OVERVIEW.md §Contribution | ✅ [OK] | `/submit/park`, `/submit/ride`, `/submit/company` pages |
| Moderation Queue | SITE_OVERVIEW.md §Moderation | ✅ [OK] | `/moderation` dashboard with queue |
| Admin Dashboard | SITE_OVERVIEW.md §Admin | ⚠️ [DEVIATION] | Only `/admin/system.vue` exists; no full user management UI |
| Terms of Service | SITE_OVERVIEW.md §Static Pages | ✅ [OK] | `/terms.vue` |
| Privacy Policy | SITE_OVERVIEW.md §Static Pages | ✅ [OK] | `/privacy.vue` |
| Community Guidelines | SITE_OVERVIEW.md §Static Pages | ✅ [OK] | `/guidelines.vue` |
| Contact Form | SITE_OVERVIEW.md §Static Pages | ❌ [MISSING] | No `/contact` page exists |
| Blog | SITE_OVERVIEW.md §Static Pages | ✅ [OK] | `apps/blog` + `/blog` pages |
| Full keyboard navigation | SITE_OVERVIEW.md §Accessibility | ⚠️ [DEVIATION] | Components use Nuxt UI which has ARIA support but not explicitly tested |
| Screen reader compatible | SITE_OVERVIEW.md §Accessibility | ⚠️ [DEVIATION] | Uses semantic HTML but no specific ARIA implementation |
| High contrast support | SITE_OVERVIEW.md §Accessibility | ⚠️ [DEVIATION] | Dark mode exists but no specific high-contrast mode |
| Reduced motion preferences | SITE_OVERVIEW.md §Accessibility | ❌ [MISSING] | Animations don't check `prefers-reduced-motion` |
| Metric/Imperial toggle | SITE_OVERVIEW.md §Internationalization | ✅ [OK] | `unit_system` in User model + `useUnits.ts` composable |
---
## 2. PAGES.md
| Feature | Source Doc | Current Status | Action Required |
|---------|------------|----------------|-----------------|
| Homepage Hero Search | PAGES.md §Homepage | ✅ [OK] | Large search input with autocomplete |
| Homepage Discovery Tabs (11) | PAGES.md §Homepage | ✅ [OK] | Tabs implemented in `discover.vue` |
| Homepage Recent Changes Feed | PAGES.md §Homepage | ✅ [OK] | Timeline component exists |
| Parks Listing with Filters | PAGES.md §Parks Listing | ✅ [OK] | `/parks/index.vue` with filters |
| Parks Listing Grid/List View Toggle | PAGES.md §Parks Listing | ❌ [MISSING] | Only grid view, no list view toggle |
| Parks Nearby with Map | PAGES.md §Parks Nearby | ✅ [OK] | Leaflet map + radius slider |
| Parks Nearby Unit Toggle (mi/km) | PAGES.md §Parks Nearby | ✅ [OK] | Unit toggle in nearby page |
| Park Detail Hero Banner | PAGES.md §Park Detail | ✅ [OK] | Hero with banner image |
| Park Detail Quick Stats (Rides/Reviews/Rating/Status/Est.) | PAGES.md §Park Detail | ✅ [OK] | Stats displayed in hero area |
| Park Detail Overview Tab | PAGES.md §Park Detail | ✅ [OK] | Description, location, contact |
| Park Detail Rides Tab | PAGES.md §Park Detail | ✅ [OK] | Filterable ride list |
| Park Detail Reviews Tab | PAGES.md §Park Detail | ✅ [OK] | Review list with ratings |
| Park Detail Photos Tab | PAGES.md §Park Detail | ✅ [OK] | Photo gallery |
| Park Detail History Tab | PAGES.md §Park Detail | ✅ [OK] | Version history/timeline |
| Park Detail Location Map | PAGES.md §Park Detail Overview | ❌ [MISSING] | No inline map on Overview tab |
| Park Detail Contact Info | PAGES.md §Park Detail Overview | ⚠️ [DEVIATION] | Website link exists but no full contact section |
| Park Detail Operator/Owner Links | PAGES.md §Park Detail Overview | ⚠️ [DEVIATION] | Not prominently displayed |
| Rides Listing with Filters | PAGES.md §Rides Listing | ✅ [OK] | `/rides/index.vue` with filters |
| Rides Advanced Filters (Speed/Height/Inversions) | PAGES.md §Rides Listing | ⚠️ [DEVIATION] | Basic filters only, no slider ranges |
| Ride Detail Nested URL (/parks/{park}/rides/{ride}) | PAGES.md §Ride Detail | ✅ [OK] | Nested routing implemented |
| Ride Detail Hero Banner | PAGES.md §Ride Detail | ✅ [OK] | Hero with banner image |
| Ride Detail Quick Stats (Speed/Height/Length/Inv/Rating) | PAGES.md §Ride Detail | ✅ [OK] | Stats displayed |
| Ride Detail Overview Tab | PAGES.md §Ride Detail | ✅ [OK] | Description + key info |
| Ride Detail Specifications Tab | PAGES.md §Ride Detail | ✅ [OK] | Full specs by category |
| Ride Detail Reviews Tab | PAGES.md §Ride Detail | ✅ [OK] | Review list |
| Ride Detail Photos Tab | PAGES.md §Ride Detail | ✅ [OK] | Photo gallery |
| Ride Detail History Tab | PAGES.md §Ride Detail | ✅ [OK] | Version history |
| Coaster Spec: Speed/Height/Length/Drop | PAGES.md §Ride Specs | ✅ [OK] | All fields in `Ride` model |
| Coaster Spec: Inversions/G-Force | PAGES.md §Ride Specs | ✅ [OK] | Fields exist |
| Coaster Spec: Duration/Capacity | PAGES.md §Ride Specs | ✅ [OK] | Fields exist |
| Coaster Spec: Track Material/Seating Type | PAGES.md §Ride Specs | ✅ [OK] | Fields exist |
| Flat Ride Specs | PAGES.md §Ride Specs | ⚠️ [DEVIATION] | Uses same `Ride` model but not all flat-specific fields |
| Water Ride Specs (Wetness Level, Splash Height) | PAGES.md §Ride Specs | ❌ [MISSING] | No wetness_level or splash_height fields |
| Dark Ride Specs (Scenes Count, Animatronics) | PAGES.md §Ride Specs | ❌ [MISSING] | No scenes_count or animatronics fields |
| Manufacturers Listing | PAGES.md §Company Pages | ✅ [OK] | `/manufacturers/index.vue` |
| Designers Listing | PAGES.md §Company Pages | ✅ [OK] | `/designers/index.vue` |
| Operators Listing | PAGES.md §Company Pages | ✅ [OK] | `/operators/index.vue` |
| Owners Listing | PAGES.md §Company Pages | ✅ [OK] | `/owners/index.vue` |
| Company Detail Tabs (Overview/Rides/Models/History) | PAGES.md §Company Detail | ⚠️ [DEVIATION] | Only index listing exists, no detail pages with tabs |
| Ride Models Listing | PAGES.md §Ride Models | ✅ [OK] | `/ride-models/index.vue` |
| Ride Model Detail with Installations | PAGES.md §Ride Models | ✅ [OK] | `/ride-models/[slug].vue` |
| Search Page with Type Tabs | PAGES.md §Search | ⚠️ [DEVIATION] | `/search.vue` exists but minimal implementation |
| Instant Search Results | PAGES.md §Search | ✅ [OK] | `GlobalSearch.vue` has debounced search |
| Recent Searches History | PAGES.md §Search | ❌ [MISSING] | No search history feature |
| Auth Page Sign In | PAGES.md §Authentication | ✅ [OK] | `/auth/login.vue` |
| Auth Page Sign Up | PAGES.md §Authentication | ✅ [OK] | `/auth/signup.vue` |
| Auth Email/Password Login | PAGES.md §Authentication | ✅ [OK] | Standard login form |
| Auth Magic Link (Passwordless) | PAGES.md §Authentication | ❌ [MISSING] | No magic link implementation |
| Auth Google OAuth | PAGES.md §Authentication | ✅ [OK] | Social auth configured |
| Auth Discord OAuth | PAGES.md §Authentication | ✅ [OK] | Discord social auth exists |
| Auth CAPTCHA Verification | PAGES.md §Authentication | ❌ [MISSING] | No CAPTCHA on forms |
| Auth Email Confirmation | PAGES.md §Authentication | ✅ [OK] | `EmailVerification` model exists |
| Auth MFA/TOTP Support | PAGES.md §Authentication | ❌ [MISSING] | No MFA implementation |
| Auth Session Management | PAGES.md §Authentication | ✅ [OK] | Django sessions + JWT |
| Auth Ban Check on Login | PAGES.md §Authentication | ✅ [OK] | `is_banned` field checked |
| User Profile Page | PAGES.md §User Profile | ✅ [OK] | `/profile/[username].vue` |
| Profile Activity Tab | PAGES.md §User Profile | ⚠️ [DEVIATION] | Overview tab but not full activity feed |
| Profile Reviews Tab | PAGES.md §User Profile | ✅ [OK] | Reviews tab exists |
| Profile Lists Tab | PAGES.md §User Profile | ❌ [MISSING] | No lists tab on profile |
| Profile Ride Credits Tab | PAGES.md §User Profile | ✅ [OK] | Credits tab exists |
| Profile Stats Display | PAGES.md §User Profile | ✅ [OK] | Total credits, unique rides, member since |
| Profile Badges Display | PAGES.md §User Profile | ❌ [MISSING] | No badges display on profile |
| Settings Page Account Section | PAGES.md §User Settings | ✅ [OK] | `/settings.vue` has account settings |
| Settings Security (Password) | PAGES.md §User Settings | ✅ [OK] | Change password modal |
| Settings Privacy | PAGES.md §User Settings | ⚠️ [DEVIATION] | Minimal privacy options |
| Settings Notifications | PAGES.md §User Settings | ✅ [OK] | Notification preferences exist |
| Settings Location & Units | PAGES.md §User Settings | ✅ [OK] | Unit system + home location |
| Settings Data Export | PAGES.md §User Settings | ⚠️ [DEVIATION] | Export service exists but no UI button |
| Settings Login History View | PAGES.md §User Settings | ❌ [MISSING] | No login history UI |
| Ride Credits Page (/my-credits) | PAGES.md §Ride Credits | ✅ [OK] | `/my-credits.vue` |
| Credits Statistics Panel | PAGES.md §Ride Credits | ✅ [OK] | Stats displayed |
| Credits Add/Edit/Delete | PAGES.md §Ride Credits | ✅ [OK] | `RideCreditModal.vue` |
| Credits Quick Increment (+/-) | PAGES.md §Ride Credits | ✅ [OK] | Quick increment on cards |
| Credits Drag Reorder | PAGES.md §Ride Credits | ❌ [MISSING] | No drag reorder functionality |
| User Lists Page (/my-lists) | PAGES.md §User Lists | ⚠️ [DEVIATION] | Uses `/lists` not `/my-lists` |
| Lists Create/Edit/Delete | PAGES.md §User Lists | ✅ [OK] | CRUD operations work |
| Lists Public/Private Toggle | PAGES.md §User Lists | ✅ [OK] | Privacy setting exists |
| Review Writing Form | PAGES.md §Reviews | ✅ [OK] | `ReviewForm.vue` |
| Review Star Rating | PAGES.md §Reviews | ✅ [OK] | `StarRating.vue` |
| Review Like/Dislike (Voting) | PAGES.md §Reviews | ⚠️ [DEVIATION] | Backend has votes but frontend UI minimal |
| Review Reply System | PAGES.md §Reviews | ⚠️ [DEVIATION] | Backend has replies but no frontend UI |
| Review Report Button | PAGES.md §Reviews | ❌ [MISSING] | No report functionality in UI |
| Photo Upload Interface | PAGES.md §Photo System | ✅ [OK] | `PhotoUpload.vue` + modal |
| Photo Drag & Drop | PAGES.md §Photo System | ✅ [OK] | Drag-drop in uploader |
| Photo Gallery Lightbox | PAGES.md §Photo System | ⚠️ [DEVIATION] | `PhotoGallery.vue` exists but no full lightbox |
| Photo Zoom/Download in Lightbox | PAGES.md §Photo System | ❌ [MISSING] | No zoom/download in gallery |
| Submission Multi-Step Wizard | PAGES.md §Submission Forms | ❌ [MISSING] | Single-page forms, no step wizard |
| Submission Auto-Save Drafts | PAGES.md §Submission Forms | ❌ [MISSING] | No draft auto-save |
| Submission Unit Toggle (m/ft) | PAGES.md §Submission Forms | ⚠️ [DEVIATION] | No inline unit toggle on forms |
| Moderation Queue Dashboard | PAGES.md §Moderation | ✅ [OK] | `/moderation/index.vue` |
| Moderation Filters | PAGES.md §Moderation | ✅ [OK] | Type, status, priority filters |
| Moderation Claim/Unclaim | PAGES.md §Moderation | ✅ [OK] | Claim functionality implemented |
| Moderation Side-by-Side Diff | PAGES.md §Moderation | ✅ [OK] | `DiffView.vue` component |
| Moderation Approve/Reject/Request Changes | PAGES.md §Moderation | ✅ [OK] | All actions available |
| Admin Dashboard with Stats | PAGES.md §Admin Dashboard | ⚠️ [DEVIATION] | Only `/admin/system.vue` with health checks |
| Admin User Management | PAGES.md §Admin | ⚠️ [DEVIATION] | `/moderation/users.vue` exists for user moderation |
| Admin Change User Role | PAGES.md §Admin | ✅ [OK] | Role change in user moderation |
| Admin Ban/Unban User | PAGES.md §Admin | ✅ [OK] | Ban functionality exists |
| Admin Delete User | PAGES.md §Admin | ⚠️ [DEVIATION] | User deletion request exists but no admin delete |
| Contact Page with Category Select | PAGES.md §Contact | ❌ [MISSING] | No contact page |
| Contact CAPTCHA | PAGES.md §Contact | ❌ [MISSING] | No contact page |
---
## 3. COMPONENTS.md
| Feature | Source Doc | Current Status | Action Required |
|---------|------------|----------------|-----------------|
| Header Component | COMPONENTS.md §Layout | ✅ [OK] | `AppHeader.vue` |
| Header Logo/Brand Link | COMPONENTS.md §Header | ✅ [OK] | Links to homepage |
| Header Primary Navigation | COMPONENTS.md §Header | ✅ [OK] | Main nav links |
| Header Search Button | COMPONENTS.md §Header | ✅ [OK] | Search trigger in header |
| Header User Menu (Avatar Dropdown) | COMPONENTS.md §Header | ✅ [OK] | User dropdown menu |
| Header Notification Bell | COMPONENTS.md §Header | ❌ [MISSING] | No notification bell in header |
| Header Mobile Hamburger Menu | COMPONENTS.md §Header | ✅ [OK] | Mobile responsive menu |
| Header Minimal Variant (Auth Pages) | COMPONENTS.md §Header | ⚠️ [DEVIATION] | Same header on all pages |
| Footer Component | COMPONENTS.md §Layout | ✅ [OK] | `AppFooter.vue` |
| Footer Navigation Columns | COMPONENTS.md §Footer | ✅ [OK] | Link sections |
| Footer Social Links | COMPONENTS.md §Footer | ✅ [OK] | Social media links |
| Footer Copyright | COMPONENTS.md §Footer | ✅ [OK] | Copyright text |
| PageContainer Component | COMPONENTS.md §Layout | ⚠️ [DEVIATION] | Uses `layouts/default.vue` instead |
| Sidebar Component (Admin/Settings) | COMPONENTS.md §Layout | ⚠️ [DEVIATION] | Settings has tabs, no separate sidebar |
| MainNav with Dropdowns | COMPONENTS.md §Navigation | ✅ [OK] | Dropdown navigation |
| TabNav Component | COMPONENTS.md §Navigation | ✅ [OK] | Uses Nuxt UI `UTabs` |
| Breadcrumbs Component | COMPONENTS.md §Navigation | ✅ [OK] | `Breadcrumbs.vue` exists |
| Breadcrumbs Schema.org Markup | COMPONENTS.md §Breadcrumbs | ⚠️ [DEVIATION] | No structured data markup |
| Pagination Component | COMPONENTS.md §Navigation | ✅ [OK] | Uses Nuxt UI `UPagination` |
| Card Component (Default/Elevated/Interactive/Glass) | COMPONENTS.md §Display | ✅ [OK] | Uses Nuxt UI `UCard` |
| Badge Component | COMPONENTS.md §Display | ✅ [OK] | `StatusBadge.vue` + `EntityStatusBadge.vue` |
| Avatar Component | COMPONENTS.md §Display | ✅ [OK] | Uses Nuxt UI `UAvatar` |
| Image Component with Lazy Loading | COMPONENTS.md §Display | ⚠️ [DEVIATION] | Standard `<img>` tags without lazy loading component |
| Image Blur Placeholder | COMPONENTS.md §Display | ❌ [MISSING] | No blur-up placeholder |
| Input Component | COMPONENTS.md §Forms | ✅ [OK] | Uses Nuxt UI `UInput` |
| Select Component with Search | COMPONENTS.md §Forms | ✅ [OK] | Uses Nuxt UI `USelect` |
| Checkbox Component | COMPONENTS.md §Forms | ✅ [OK] | Uses Nuxt UI `UCheckbox` |
| Radio Component | COMPONENTS.md §Forms | ✅ [OK] | Uses Nuxt UI radio |
| Switch Component | COMPONENTS.md §Forms | ✅ [OK] | Uses Nuxt UI `UToggle` |
| Button Component (All Variants) | COMPONENTS.md §Forms | ✅ [OK] | Uses Nuxt UI `UButton` |
| DatePicker Component | COMPONENTS.md §Forms | ⚠️ [DEVIATION] | Uses HTML date input, no custom DatePicker |
| DatePicker Date Precision Selector | COMPONENTS.md §Forms | ❌ [MISSING] | No date precision selection |
| Slider Component | COMPONENTS.md §Forms | ❌ [MISSING] | No slider/range component |
| Toast Component | COMPONENTS.md §Feedback | ✅ [OK] | Uses Nuxt UI `useToast` |
| Alert Component | COMPONENTS.md §Feedback | ✅ [OK] | Uses Nuxt UI `UAlert` |
| Modal/Dialog Component | COMPONENTS.md §Feedback | ✅ [OK] | Multiple modals exist |
| Loading Spinner | COMPONENTS.md §Feedback | ✅ [OK] | Uses icon spinners |
| Skeleton Loading | COMPONENTS.md §Feedback | ⚠️ [DEVIATION] | Uses spinners, not skeleton loaders |
| Progress Bar | COMPONENTS.md §Feedback | ⚠️ [DEVIATION] | No progress bar component |
| Empty State Component | COMPONENTS.md §Feedback | ✅ [OK] | Empty states with icons/messages |
| Table Component | COMPONENTS.md §Data Display | ✅ [OK] | Uses Nuxt UI `UTable` |
| Table Sortable Columns | COMPONENTS.md §Table | ✅ [OK] | Sorting available |
| Table Row Selection | COMPONENTS.md §Table | ⚠️ [DEVIATION] | Not all tables have selection |
| Stats Card Component | COMPONENTS.md §Data Display | ✅ [OK] | `BentoCard.vue` + stat displays |
| Rating Display Component | COMPONENTS.md §Data Display | ✅ [OK] | `StarRating.vue` |
| ParkCard Component | COMPONENTS.md §Entity Components | ❌ [MISSING] | No dedicated `ParkCard.vue` (uses inline cards) |
| RideCard Component | COMPONENTS.md §Entity Components | ❌ [MISSING] | No dedicated `RideCard.vue` (uses inline cards) |
| ReviewCard Component | COMPONENTS.md §Entity Components | ✅ [OK] | `ReviewCard.vue` exists |
| CreditCard Component | COMPONENTS.md §Entity Components | ✅ [OK] | `CreditCard.vue` exists |
| UnitDisplay Component | COMPONENTS.md §Specialty | ⚠️ [DEVIATION] | Logic in `useUnits.ts` but no dedicated component |
| Map Component (Leaflet) | COMPONENTS.md §Specialty | ⚠️ [DEVIATION] | Inline in pages, no reusable `Map.vue` |
| Map Marker Clusters | COMPONENTS.md §Map | ❌ [MISSING] | No marker clustering |
| Map Full-Screen Toggle | COMPONENTS.md §Map | ❌ [MISSING] | No full-screen map option |
| Timeline Component | COMPONENTS.md §Specialty | ⚠️ [DEVIATION] | History tab has timeline but no reusable component |
| Diff Viewer Component | COMPONENTS.md §Specialty | ✅ [OK] | `DiffView.vue` |
| ImageGallery Component | COMPONENTS.md §Specialty | ⚠️ [DEVIATION] | `PhotoGallery.vue` exists but limited functionality |
| ImageGallery Lightbox with Navigation | COMPONENTS.md §ImageGallery | ⚠️ [DEVIATION] | Basic lightbox, no prev/next |
| ImageGallery Zoom/Download | COMPONENTS.md §ImageGallery | ❌ [MISSING] | No zoom or download |
| SearchAutocomplete Component | COMPONENTS.md §Specialty | ⚠️ [DEVIATION] | `GlobalSearch.vue` has autocomplete inline |
| Tooltip Component | COMPONENTS.md §Specialty | ⚠️ [DEVIATION] | Uses Nuxt UI tooltips, no custom component |
| HoverCard Component | COMPONENTS.md §Specialty | ❌ [MISSING] | No hover card previews |
---
## 4. DESIGN_SYSTEM.md
| Feature | Source Doc | Current Status | Action Required |
|---------|------------|----------------|-----------------|
| Brand Name/Tagline | DESIGN_SYSTEM.md §Brand | ✅ [OK] | "ThrillWiki" used consistently |
| Light Mode Color Palette | DESIGN_SYSTEM.md §Colors | ✅ [OK] | Light mode theme exists |
| Dark Mode Color Palette | DESIGN_SYSTEM.md §Colors | ✅ [OK] | Dark mode with toggle |
| Semantic Colors (Primary/Secondary/Muted) | DESIGN_SYSTEM.md §Colors | ✅ [OK] | CSS variables defined |
| Gradients (Primary/Glow/Subtle) | DESIGN_SYSTEM.md §Colors | ⚠️ [DEVIATION] | Some gradients, not full spec |
| Typography: Inter Font | DESIGN_SYSTEM.md §Typography | ✅ [OK] | Inter font configured |
| Type Scale (12-48px) | DESIGN_SYSTEM.md §Typography | ✅ [OK] | Font sizes match scale |
| Spacing System (4px base) | DESIGN_SYSTEM.md §Spacing | ✅ [OK] | Tailwind spacing used |
| Border Radius Tokens | DESIGN_SYSTEM.md §Border Radius | ✅ [OK] | Tailwind rounded utilities |
| Shadows (Light Mode) | DESIGN_SYSTEM.md §Shadows | ✅ [OK] | Shadow utilities used |
| Glow Effects (Dark Mode) | DESIGN_SYSTEM.md §Shadows | ⚠️ [DEVIATION] | Limited glow implementation |
| Animation Timing Functions | DESIGN_SYSTEM.md §Animation | ⚠️ [DEVIATION] | Uses default transitions |
| Animation Durations (150-500ms) | DESIGN_SYSTEM.md §Animation | ✅ [OK] | Transitions within spec |
| Fade/Slide/Scale Animations | DESIGN_SYSTEM.md §Animation | ⚠️ [DEVIATION] | Basic transitions only |
| Button Variants (Primary/Secondary/Outline/Ghost/Destructive) | DESIGN_SYSTEM.md §Components | ✅ [OK] | All variants via Nuxt UI |
| Card Variants (Default/Interactive/Glass) | DESIGN_SYSTEM.md §Components | ⚠️ [DEVIATION] | Glass cards on dark mode but not complete |
| Input States (Default/Focused/Error/Disabled) | DESIGN_SYSTEM.md §Components | ✅ [OK] | All states via Nuxt UI |
| Responsive Breakpoints (sm/md/lg/xl/2xl) | DESIGN_SYSTEM.md §Responsive | ✅ [OK] | Tailwind breakpoints |
| Color Contrast (4.5:1 minimum) | DESIGN_SYSTEM.md §Accessibility | ⚠️ [DEVIATION] | Not explicitly verified |
| Focus Ring on Interactive Elements | DESIGN_SYSTEM.md §Accessibility | ✅ [OK] | Nuxt UI provides focus rings |
| Respect prefers-reduced-motion | DESIGN_SYSTEM.md §Accessibility | ❌ [MISSING] | Not implemented |
| Dark Mode: Reduce Contrast | DESIGN_SYSTEM.md §Dark Mode | ✅ [OK] | Off-white text colors used |
| Dark Mode: Subtle Borders | DESIGN_SYSTEM.md §Dark Mode | ✅ [OK] | Semi-transparent borders |
| Lucide Icons | DESIGN_SYSTEM.md §Icons | ⚠️ [DEVIATION] | Uses Heroicons, not Lucide |
---
## 5. USER_FLOWS.md
| Feature | Source Doc | Current Status | Action Required |
|---------|------------|----------------|-----------------|
| Homepage Discovery Journey | USER_FLOWS.md §Discovery | ✅ [OK] | Search → Browse → Detail flow works |
| Search Flow with Debounce (300ms) | USER_FLOWS.md §Search Flow | ✅ [OK] | Debounced search implemented |
| Search Keyboard Navigation | USER_FLOWS.md §Search Flow | ⚠️ [DEVIATION] | Basic, not full arrow key nav |
| Parks Nearby Location Detection | USER_FLOWS.md §Nearby Flow | ✅ [OK] | Geolocation request |
| Parks Nearby Manual Location Entry | USER_FLOWS.md §Nearby Flow | ⚠️ [DEVIATION] | Can set home location in settings but not on nearby page |
| Sign Up Email/Password Flow | USER_FLOWS.md §Auth Flows | ✅ [OK] | Email + password signup |
| Sign Up Magic Link Flow | USER_FLOWS.md §Auth Flows | ❌ [MISSING] | No magic link |
| Sign Up OAuth Flow | USER_FLOWS.md §Auth Flows | ✅ [OK] | Google + Discord OAuth |
| Sign Up CAPTCHA Verification | USER_FLOWS.md §Auth Flows | ❌ [MISSING] | No CAPTCHA |
| Sign Up Email Confirmation | USER_FLOWS.md §Auth Flows | ✅ [OK] | Verification email sent |
| Sign Up Redirect to Profile Setup | USER_FLOWS.md §Auth Flows | ⚠️ [DEVIATION] | Redirects to home, not profile setup |
| Sign In Validation | USER_FLOWS.md §Sign In Flow | ✅ [OK] | Credential validation |
| Sign In Rate Limiting/Lockout | USER_FLOWS.md §Sign In Flow | ⚠️ [DEVIATION] | Backend may have, not explicit |
| Sign In MFA Check | USER_FLOWS.md §Sign In Flow | ❌ [MISSING] | No MFA |
| Sign In Ban Status Check | USER_FLOWS.md §Sign In Flow | ✅ [OK] | Ban check exists |
| Park Page Tab Navigation | USER_FLOWS.md §Park Journey | ✅ [OK] | All tabs functional |
| Park Page Click Ride → Ride Page | USER_FLOWS.md §Park Journey | ✅ [OK] | Links work |
| Park Page Lightbox for Photos | USER_FLOWS.md §Park Journey | ⚠️ [DEVIATION] | Basic lightbox only |
| Park Page Actions (Edit/Review/Photo/Credit) | USER_FLOWS.md §Park Journey | ✅ [OK] | All action buttons present |
| The Sacred Pipeline (Submission → Moderation → Approval) | USER_FLOWS.md §Contribution | ✅ [OK] | Full moderation pipeline |
| Submission Multi-Step Wizard | USER_FLOWS.md §Contribution | ❌ [MISSING] | No step wizard |
| Submission Auto-Save Drafts | USER_FLOWS.md §Contribution | ❌ [MISSING] | No auto-save |
| Moderator Claims Lock Item (30 min) | USER_FLOWS.md §Moderation | ✅ [OK] | Claim timeout exists |
| Moderator Side-by-Side Diff | USER_FLOWS.md §Moderation | ✅ [OK] | `DiffView.vue` |
| Moderator Approve/Reject/Request Changes | USER_FLOWS.md §Moderation | ✅ [OK] | All actions available |
| Write Review Flow | USER_FLOWS.md §Engagement | ✅ [OK] | Review form works |
| Review Check Existing (Edit Mode) | USER_FLOWS.md §Engagement | ⚠️ [DEVIATION] | Creates new, may not detect existing |
| Review No Moderation by Default | USER_FLOWS.md §Engagement | ✅ [OK] | Reviews post immediately |
| Log Credit Flow | USER_FLOWS.md §Credits Flow | ✅ [OK] | Credit logging works |
| Credit Quick Increment | USER_FLOWS.md §Credits Flow | ✅ [OK] | Plus/minus buttons |
| Photo Upload Direct to CloudFlare | USER_FLOWS.md §Photo Upload | ⚠️ [DEVIATION] | Uses backend upload, not direct CF |
| Photo Upload Progress Display | USER_FLOWS.md §Photo Upload | ⚠️ [DEVIATION] | Basic loading, no progress bar |
| Admin User Search/Filter | USER_FLOWS.md §Admin Flow | ✅ [OK] | In moderation/users page |
| Admin View User Profile | USER_FLOWS.md §Admin Flow | ✅ [OK] | Profile view works |
| Admin Change Role | USER_FLOWS.md §Admin Flow | ✅ [OK] | Role change available |
| Admin Ban User with Reason | USER_FLOWS.md §Admin Flow | ✅ [OK] | Ban with reason |
| Admin Action Audit Trail | USER_FLOWS.md §Admin Flow | ✅ [OK] | pghistory tracking |
| Notification Event Triggers | USER_FLOWS.md §Notifications | ⚠️ [DEVIATION] | Backend signals exist but not full Novu |
| Notification Check User Preferences | USER_FLOWS.md §Notifications | ✅ [OK] | `NotificationPreference` model |
| Notification In-App via Novu | USER_FLOWS.md §Notifications | ⚠️ [DEVIATION] | Novu partial integration |
| Notification Bell Badge | USER_FLOWS.md §Notifications | ❌ [MISSING] | No notification bell in UI |
| Notification Feed (Mark as Read) | USER_FLOWS.md §Notifications | ❌ [MISSING] | No notification feed UI |
---
## Summary Statistics
| Category | Missing | Partial | Wrong | Complete |
|----------|---------|---------|-------|----------|
| Pages/Routes | 12 | 8 | 2 | 15 |
| Components | 8 | 5 | 0 | 14 |
| Features | 10 | 6 | 1 | 18 |
| **TOTAL** | **30** | **19** | **3** | **47** |
| Category | Total | ✅ OK | ⚠️ Deviation | ❌ Missing |
|----------|-------|-------|--------------|------------|
| SITE_OVERVIEW.md | 32 | 22 | 7 | 3 |
| PAGES.md | 88 | 54 | 19 | 15 |
| COMPONENTS.md | 58 | 31 | 17 | 10 |
| DESIGN_SYSTEM.md | 24 | 16 | 7 | 1 |
| USER_FLOWS.md | 43 | 27 | 10 | 6 |
| **TOTAL** | **245** | **150 (61%)** | **60 (24%)** | **35 (15%)** |
---
## 1. PAGES GAP ANALYSIS
### 1.1 Homepage (`/`)
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| Hero Search | PAGES.md (L46-47) | ✅ Complete | None |
| Discovery Tabs (11 categories) | PAGES.md (L51-53), SITE_OVERVIEW.md (L83-93) | ⚠️ Partial | CURRENT: 4 tabs only (Trending, New & Opening, Top Rated, Closing). MISSING: All, Parks, Coasters, Flat Rides, Water Rides, Dark Rides, Shows, Transport |
| Content Grid per Tab | PAGES.md (L55-58) | ⚠️ Partial | Cards exist but not all categories implemented |
| Recent Changes Feed | PAGES.md (L62-65) | ✅ Complete | Implemented in index.vue |
### 1.2 Parks Pages
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| `/parks` - Parks Listing | PAGES.md (L101-130) | ✅ Complete | Implemented |
| `/parks/nearby` - Location-Based Discovery | PAGES.md (L147-188), SITE_OVERVIEW.md (L25-26) | ❌ Missing | Create new page with Leaflet map, geolocation, radius slider |
| `/parks/{slug}` - Park Detail | PAGES.md (L191-256) | ⚠️ Partial | Missing: Reviews Tab, Photos Tab, History Tab, Hero "Edit" and "📷" buttons |
| Park Detail - Overview Tab | PAGES.md (L233) | ⚠️ Partial | Missing: Location map embed, Contact info, Operator/Owner links |
| Park Detail - Rides Tab | PAGES.md (L234) | ✅ Complete | Implemented with filters |
| Park Detail - Reviews Tab | PAGES.md (L235) | ❌ Missing | No reviews tab implemented |
| Park Detail - Photos Tab | PAGES.md (L236) | ❌ Missing | No photos gallery tab |
| Park Detail - History Tab | PAGES.md (L237) | ❌ Missing | No version history/timeline |
### 1.3 Rides Pages
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| `/rides` - All Rides Listing | PAGES.md (L262-288) | ✅ Complete | Implemented |
| `/parks/{park}/rides/{ride}` - Ride Detail | PAGES.md (L302-362) | ⚠️ Partial | Missing: Specifications Tab, Reviews Tab, Photos Tab, History Tab |
| Ride Specifications Tab | PAGES.md (L337-361) | ❌ Missing | Need category-specific spec display (Coasters, Flat, Water, Dark) |
| Ride Reviews Tab | PAGES.md (L325) | ❌ Missing | No reviews tab |
| Ride Photos Tab | PAGES.md (L325) | ❌ Missing | No photos gallery |
| Ride History Tab | PAGES.md (L325) | ❌ Missing | No version history |
| Advanced Filters (Speed/Height sliders) | PAGES.md (L275-279) | ❌ Missing | Rides listing needs spec-based filters |
### 1.4 Company Pages
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| `/manufacturers` - Listing | PAGES.md (L371-393) | ✅ Complete | Implemented |
| `/manufacturers/{slug}` - Detail | PAGES.md (L395-418) | ✅ Complete | Implemented |
| `/designers` - Designers Listing | PAGES.md (L371), SITE_OVERVIEW.md (L45) | ❌ Missing | Create new page for ride designers |
| `/operators` - Operators Listing | PAGES.md (L372), SITE_OVERVIEW.md (L46) | ❌ Missing | Create new page for park operators |
| `/owners` - Property Owners | PAGES.md (L373), SITE_OVERVIEW.md (L47) | ❌ Missing | Create new page for property owners |
| Company Tabs (Overview, Rides, Models, History) | PAGES.md (L412-413) | ⚠️ Partial | Missing Models Tab, History Tab |
### 1.5 Ride Models
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| `/ride-models/{slug}` - Model Detail | PAGES.md (L422-450) | ❌ Missing | Create page showing standard specs and all installations |
### 1.6 Search
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| `/search` - Global Search Page | PAGES.md (L454-497) | ✅ Complete | Implemented |
| Type Tabs Filter | PAGES.md (L469-471) | ⚠️ Partial | Basic implementation exists, verify all types |
| Recent Searches | PAGES.md (L496) | ❌ Missing | No recent search history |
| Keyboard Navigation | PAGES.md (L495) | ⚠️ Partial | Verify arrow key / enter support |
### 1.7 Authentication
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| `/auth` - Sign In / Sign Up | PAGES.md (L500-551) | ⚠️ Partial | Missing: Magic Link, Google OAuth, Discord OAuth buttons |
| CAPTCHA Verification | PAGES.md (L548) | ❌ Missing | No CAPTCHA on forms |
| MFA Support (TOTP) | PAGES.md (L548) | ❌ Missing | No MFA setup/verification UI |
| Email Confirmation Flow | PAGES.md (L549) | ⚠️ Partial | Backend exists, verify frontend flow |
### 1.8 User Profile
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| `/profile/{username}` - Public Profile | PAGES.md (L554-591) | ✅ Complete | Implemented at `/profiles/[username].vue` |
| Profile Stats (Credits, Reviews, Photos) | PAGES.md (L567) | ⚠️ Partial | Verify all stats displayed |
| Badge Display | PAGES.md (L570) | ❌ Missing | No badge system UI |
| Activity Tab | PAGES.md (L587) | ⚠️ Partial | Basic implementation |
| Reviews Tab | PAGES.md (L588) | ❌ Missing | No dedicated reviews tab on profile |
| Lists Tab | PAGES.md (L589) | ⚠️ Partial | Lists exist but verify integration |
| Ride Credits Tab | PAGES.md (L590) | ❌ Missing | Credits not shown on public profile |
### 1.9 User Settings
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| `/settings` - Account Settings | PAGES.md (L594-631) | ❌ Missing | Create settings page with sidebar navigation |
| Account Section | PAGES.md (L625) | ❌ Missing | Email, password, delete account |
| Security Section | PAGES.md (L626) | ❌ Missing | MFA, sessions, login history |
| Privacy Section | PAGES.md (L627) | ❌ Missing | Profile visibility, activity sharing |
| Notifications Section | PAGES.md (L628) | ❌ Missing | Email preferences, in-app alerts |
| Location & Units Section | PAGES.md (L629) | ❌ Missing | Preferred units, home location |
| Data Section | PAGES.md (L630) | ❌ Missing | Export data, submission history |
### 1.10 Ride Credits
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| `/my-credits` - Ride Credits Dashboard | PAGES.md (L634-678) | ❌ Missing | Create full credits management page |
| Statistics Display | PAGES.md (L646-649) | ❌ Missing | Total, Unique, Parks, Countries |
| Quick Increment (+/-) | PAGES.md (L654-662) | ❌ Missing | In-line count adjustment |
| Add Credit Flow | PAGES.md (L671) | ❌ Missing | Search and log new ride |
| Filter by Category/Park/Year | PAGES.md (L650) | ❌ Missing | Comprehensive filtering |
### 1.11 User Lists
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| `/my-lists` - Personal Rankings | PAGES.md (L681-714) | ⚠️ Partial | Basic list management exists |
| Create List | PAGES.md (L689) | ✅ Complete | Exists at `/lists/create.vue` |
| Drag-and-Drop Reorder | PAGES.md (L700) | ❌ Missing | No drag-and-drop |
| Public/Private Toggle | PAGES.md (L694-700) | ⚠️ Partial | Verify implementation |
### 1.12 Reviews
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| Write Review Form | PAGES.md (L722-741) | ❌ Missing | Need review form component with star rating |
| Review Display Card | PAGES.md (L746-756) | ❌ Missing | Need ReviewCard component |
| Reply to Review | PAGES.md (L754) | ❌ Missing | No reply functionality |
| Report Review | PAGES.md (L754) | ❌ Missing | No report button |
| Vote (Thumbs Up/Down) | PAGES.md (L754) | ❌ Missing | No voting system |
### 1.13 Photo System
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| Upload Interface | PAGES.md (L765-793) | ⚠️ Partial | GalleryUploader exists, verify features |
| Drag & Drop Upload | PAGES.md (L774-775) | ⚠️ Partial | Verify implementation |
| Photo Gallery with Lightbox | PAGES.md (L797-815) | ❌ Missing | No lightbox viewer |
| Edit/Crop Before Upload | PAGES.md (L511) | ❌ Missing | No image editing |
### 1.14 Content Submission
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| `/submit/park` - Submit New Park | PAGES.md (L823), USER_FLOWS.md (L340-436) | ❌ Missing | Multi-step wizard form |
| `/submit/ride` - Submit New Ride | PAGES.md (L823) | ❌ Missing | Multi-step wizard form |
| `/submit/company` - Submit Company | PAGES.md (L823) | ❌ Missing | Multi-step wizard form |
| `/my-submissions` - Submission History | SITE_OVERVIEW.md (L64) | ❌ Missing | View user's past submissions |
| Auto-Save Drafts | PAGES.md (L858) | ❌ Missing | No draft persistence |
| Unit Toggle in Forms | PAGES.md (L864) | ❌ Missing | Metric/Imperial toggle |
### 1.15 Moderation
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| `/moderation` - Queue Dashboard | PAGES.md (L874-898) | ✅ Complete | Implemented |
| `/moderation/{id}` - Review Interface | PAGES.md (L902-929) | ⚠️ Partial | Basic review exists, missing side-by-side diff |
| Claim/Unclaim System | PAGES.md (L886-890), USER_FLOWS.md (L695-700) | ✅ Complete | Implemented with SSE |
| Side-by-Side Diff Viewer | PAGES.md (L910-918), COMPONENTS.md (L872-884) | ❌ Missing | No visual diff comparison |
| Approve Selected Fields | PAGES.md (L925) | ❌ Missing | Only full approve/reject |
### 1.16 Admin Pages
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| `/admin` - Dashboard | PAGES.md (L937-962) | ❌ Missing | Only `/admin/system` exists |
| `/admin/users` - User Management | PAGES.md (L965-986), USER_FLOWS.md (L752-800) | ⚠️ Partial | Basic user list at `/moderation/users.vue` |
| `/admin/monitoring` - System Health | SITE_OVERVIEW.md (L73) | ❌ Missing | No monitoring dashboard |
| `/admin/errors` - Error Tracking | SITE_OVERVIEW.md (L74) | ❌ Missing | No error tracker UI |
| Ban User Flow | USER_FLOWS.md (L788-797) | ❌ Missing | No ban/unban UI |
### 1.17 Static Pages
| Feature Name | Source Doc File | Status | Action Required |
|--------------|-----------------|--------|-----------------|
| `/terms` - Terms of Service | PAGES.md (L995-997) | ❌ Missing | Create static page |
| `/privacy` - Privacy Policy | PAGES.md (L999-1003) | ❌ Missing | Create static page |
| `/guidelines` - Community Guidelines | PAGES.md (L1005-1009) | ❌ Missing | Create static page |
| `/contact` - Contact Form | PAGES.md (L1011-1042) | ⚠️ Partial | `/support/index.vue` exists but verify full form |
| `/blog` - Blog | PAGES.md (L1044-1048) | ✅ Complete | Implemented |
---
## 2. COMPONENTS GAP ANALYSIS
### 2.1 Layout Components
| Component | Source Doc File | Status | Action Required |
|-----------|-----------------|--------|-----------------|
| Header | COMPONENTS.md (L71-93) | ✅ Complete | AppHeader.vue exists |
| Footer | COMPONENTS.md (L96-120) | ❌ Missing | No dedicated footer component |
| PageContainer | COMPONENTS.md (L123-152) | ⚠️ Partial | Layout exists, verify max-width |
| Sidebar (Settings/Admin) | COMPONENTS.md (L155-172) | ❌ Missing | No sidebar navigation |
### 2.2 Navigation Components
| Component | Source Doc File | Status | Action Required |
|-----------|-----------------|--------|-----------------|
| MainNav | COMPONENTS.md (L178-201) | ✅ Complete | In AppHeader |
| TabNav | COMPONENTS.md (L204-221) | ✅ Complete | Using UTabs |
| Breadcrumbs | COMPONENTS.md (L224-237) | ❌ Missing | No breadcrumb component |
| Pagination | COMPONENTS.md (L240-256) | ⚠️ Partial | Verify existence |
### 2.3 Display Components
| Component | Source Doc File | Status | Action Required |
|-----------|-----------------|--------|-----------------|
| Card | COMPONENTS.md (L261-289) | ✅ Complete | BentoCard and others |
| Badge | COMPONENTS.md (L292-311) | ✅ Complete | EntityStatusBadge, StatusBadge |
| Avatar | COMPONENTS.md (L314-331) | ⚠️ Partial | AvatarUploader exists, check display |
| Image (Lazy/Blur) | COMPONENTS.md (L334-358) | ⚠️ Partial | Verify lazy loading |
### 2.4 Form Components
| Component | Source Doc File | Status | Action Required |
|-----------|-----------------|--------|-----------------|
| Input | COMPONENTS.md (L363-388) | ✅ Complete | Using NuxtUI |
| Select | COMPONENTS.md (L391-416) | ✅ Complete | Using NuxtUI |
| Checkbox/Radio/Switch | COMPONENTS.md (L419-456) | ✅ Complete | Using NuxtUI |
| Button | COMPONENTS.md (L459-488) | ✅ Complete | Using UButton |
| DatePicker | COMPONENTS.md (L491-518) | ❌ Missing | No date picker |
| Slider (Range) | COMPONENTS.md (L521-537) | ❌ Missing | No range slider |
### 2.5 Feedback Components
| Component | Source Doc File | Status | Action Required |
|-----------|-----------------|--------|-----------------|
| Toast | COMPONENTS.md (L542-559) | ✅ Complete | Using NuxtUI |
| Alert | COMPONENTS.md (L562-575) | ✅ Complete | Using NuxtUI |
| Modal/Dialog | COMPONENTS.md (L578-603) | ✅ Complete | Modals exist |
| Loading States | COMPONENTS.md (L606-628) | ⚠️ Partial | Spinner exists, verify skeleton |
| Empty State | COMPONENTS.md (L631-647) | ⚠️ Partial | Basic empty states |
### 2.6 Data Display Components
| Component | Source Doc File | Status | Action Required |
|-----------|-----------------|--------|-----------------|
| Table | COMPONENTS.md (L652-672) | ⚠️ Partial | Verify sortable/filterable |
| Stats Card | COMPONENTS.md (L675-686) | ✅ Complete | In BentoCard |
| Rating Display (Stars) | COMPONENTS.md (L689-704) | ❌ Missing | Need StarRating component |
### 2.7 Entity Components
| Component | Source Doc File | Status | Action Required |
|-----------|-----------------|--------|-----------------|
| ParkCard | COMPONENTS.md (L709-737) | ⚠️ Partial | Verify all fields |
| RideCard | COMPONENTS.md (L740-767) | ⚠️ Partial | Verify all fields |
| ReviewCard | COMPONENTS.md (L770-786) | ❌ Missing | Create ReviewCard |
| CreditCard | COMPONENTS.md (L789-805) | ❌ Missing | Create CreditCard for ride credits |
### 2.8 Specialty Components
| Component | Source Doc File | Status | Action Required |
|-----------|-----------------|--------|-----------------|
| UnitDisplay | COMPONENTS.md (L811-827) | ⚠️ Partial | useUnits exists, verify display |
| Map (Leaflet) | COMPONENTS.md (L829-852) | ⚠️ Partial | map.vue exists, verify features |
| Timeline | COMPONENTS.md (L855-868) | ⚠️ Partial | timeline.vue exists |
| Diff Viewer | COMPONENTS.md (L871-885) | ❌ Missing | Create for moderation |
| ImageGallery | COMPONENTS.md (L888-906) | ❌ Missing | With lightbox |
| SearchAutocomplete | COMPONENTS.md (L909-923) | ✅ Complete | GlobalSearch.vue |
| Tooltip | COMPONENTS.md (L926-938) | ✅ Complete | Using NuxtUI |
| HoverCard | COMPONENTS.md (L941-957) | ❌ Missing | Rich preview on hover |
---
## 3. USER FLOWS GAP ANALYSIS
### 3.1 Discovery Flows
| Flow | Source Doc File | Status | Action Required |
|------|-----------------|--------|-----------------|
| Homepage Discovery | USER_FLOWS.md (L21-49) | ⚠️ Partial | Missing all 11 discovery tabs |
| Search Flow | USER_FLOWS.md (L51-93) | ✅ Complete | Implemented |
| Parks Nearby Flow | USER_FLOWS.md (L95-148) | ❌ Missing | No nearby page with geolocation |
### 3.2 Authentication Flows
| Flow | Source Doc File | Status | Action Required |
|------|-----------------|--------|-----------------|
| Sign Up Flow | USER_FLOWS.md (L154-208) | ⚠️ Partial | Missing OAuth, Magic Link, CAPTCHA |
| Sign In Flow | USER_FLOWS.md (L210-279) | ⚠️ Partial | Missing MFA check, Ban check UI |
### 3.3 Content Viewing Flows
| Flow | Source Doc File | Status | Action Required |
|------|-----------------|--------|-----------------|
| Park Page Journey | USER_FLOWS.md (L283-334) | ⚠️ Partial | Missing Reviews/Photos/History tabs |
### 3.4 Contribution Flows
| Flow | Source Doc File | Status | Action Required |
|------|-----------------|--------|-----------------|
| Submit New Content | USER_FLOWS.md (L340-437) | ❌ Missing | No submission forms |
| Edit Content Flow | USER_FLOWS.md (L439-485) | ❌ Missing | No edit forms |
| Photo Upload Flow | USER_FLOWS.md (L487-545) | ⚠️ Partial | Basic upload exists |
### 3.5 Engagement Flows
| Flow | Source Doc File | Status | Action Required |
|------|-----------------|--------|-----------------|
| Write Review Flow | USER_FLOWS.md (L551-609) | ❌ Missing | No review writing UI |
| Log Ride Credit Flow | USER_FLOWS.md (L611-660) | ❌ Missing | No credit logging UI |
### 3.6 Moderation Flows
| Flow | Source Doc File | Status | Action Required |
|------|-----------------|--------|-----------------|
| Moderator Queue Workflow | USER_FLOWS.md (L664-746) | ⚠️ Partial | Missing diff viewer |
### 3.7 Admin Flows
| Flow | Source Doc File | Status | Action Required |
|------|-----------------|--------|-----------------|
| User Management Flow | USER_FLOWS.md (L750-800) | ⚠️ Partial | Basic list, missing actions |
---
## 4. DESIGN SYSTEM GAP ANALYSIS
| Feature | Source Doc File | Status | Action Required |
|---------|-----------------|--------|-----------------|
| Light/Dark Mode | DESIGN_SYSTEM.md (L23-75) | ✅ Complete | Implemented with ThemeSwitcher |
| Typography (Inter) | DESIGN_SYSTEM.md (L101-150) | ✅ Complete | Inter font loaded |
| Spacing System | DESIGN_SYSTEM.md (L154-172) | ✅ Complete | Using TailwindCSS |
| Border Radius | DESIGN_SYSTEM.md (L175-184) | ✅ Complete | Using TailwindCSS |
| Shadows | DESIGN_SYSTEM.md (L187-218) | ✅ Complete | Using TailwindCSS |
| Glow Effects (Dark Mode) | DESIGN_SYSTEM.md (L220-227) | ⚠️ Partial | Verify implementation |
| Animations | DESIGN_SYSTEM.md (L230-278) | ⚠️ Partial | Basic transitions |
| Glass Card (Dark Mode) | DESIGN_SYSTEM.md (L335-339) | ❌ Missing | No glassmorphism cards |
| Accessibility (Focus States) | DESIGN_SYSTEM.md (L468-471) | ✅ Complete | Using TailwindCSS |
| Reduced Motion | DESIGN_SYSTEM.md (L473-476) | ❌ Missing | No prefers-reduced-motion |
---
## 5. PRIORITY BATCHES
Based on the gaps identified above, here are the recommended implementation batches:
### BATCH 1: Critical Missing Pages (HIGH PRIORITY)
1. `/my-credits` - Ride Credits Dashboard
2. `/settings` - Full Settings Page (6 sections)
3. `/parks/nearby` - Location-based Discovery
4. `/my-submissions` - Submission History
5. Static Pages: `/terms`, `/privacy`, `/guidelines`
### BATCH 2: Missing Tabs on Existing Pages (HIGH PRIORITY)
1. Park Detail - Add Reviews, Photos, History tabs
2. Ride Detail - Add Specifications, Reviews, Photos, History tabs
3. Homepage - Expand to 11 Discovery Tabs (vs current 4)
4. Profile - Add Reviews, Ride Credits tabs
### BATCH 3: Missing Components (MEDIUM PRIORITY)
1. ReviewCard component
2. CreditCard component
3. StarRating component
4. Diff Viewer component
5. ImageGallery with Lightbox
6. Footer component
7. Breadcrumbs component
8. DatePicker component
9. Range Slider component
### BATCH 4: Submission Forms (MEDIUM PRIORITY)
1. `/submit/park` - Park submission wizard
2. `/submit/ride` - Ride submission wizard
3. `/submit/company` - Company submission wizard
4. Edit forms for existing entities
### BATCH 5: Company Pages (MEDIUM PRIORITY)
1. `/designers` - Designers listing and detail
2. `/operators` - Operators listing and detail
3. `/owners` - Property Owners listing and detail
4. `/ride-models/{slug}` - Ride Model detail page
### BATCH 6: Enhanced Features (LOW PRIORITY)
1. OAuth Authentication (Google, Discord)
2. Magic Link Login
3. CAPTCHA on forms
4. MFA Setup UI
5. Review voting (thumbs up/down)
6. Review replies
7. Recent searches history
8. Drag-and-drop list reordering
9. Glass card effects
10. Reduced motion support
---
## 6. SOURCE DOCUMENT REFERENCE
| File | Lines | Primary Coverage |
|------|-------|------------------|
| SITE_OVERVIEW.md | 245 | Site map, user roles, key journeys |
| PAGES.md | 1058 | All page specifications |
| COMPONENTS.md | 967 | UI component library |
| USER_FLOWS.md | 882 | User journey diagrams |
| DESIGN_SYSTEM.md | 496 | Visual identity, colors, typography |
---
*This matrix is the Source of Truth for synchronization. Update as gaps are addressed.*
## Top Priority Missing Features
### Critical (User-Facing Features)
1. **Contact Page** (`/contact`) - Static page requirement
2. **Leaderboard Page** - Community engagement feature
3. **Notification Bell + Feed** - User engagement/retention
4. **CAPTCHA on Forms** - Security requirement
5. **MFA/TOTP Support** - Security requirement
6. **Magic Link Authentication** - UX enhancement
### High Priority (UX Components)
7. **Multi-Step Submission Wizard** - UX for complex forms
8. **ParkCard / RideCard Components** - Reusable entity cards
9. **HoverCard Previews** - Rich preview on hover
10. **ImageGallery Lightbox (Zoom/Download)** - Photo viewing
11. **Grid/List View Toggle** on listings
12. **Search History** feature
### Medium Priority (Polish)
13. **Reduced Motion Support** - Accessibility
14. **Skeleton Loading States** - Better perceived performance
15. **Profile Badges Display** - Community engagement
16. **Profile Lists Tab** - Feature visibility
17. **Company Detail Pages with Tabs** - Content depth
18. **Slider/Range Components** for advanced filters
19. **Map Marker Clustering** - Performance
20. **Breadcrumbs Schema.org Markup** - SEO
### Low Priority (Nice to Have)
21. **Login History View** in settings
22. **Data Export Button** in UI
23. **Ride Drag Reorder** for credits
24. **Water/Dark Ride Specific Specs** - Content completeness
25. **Date Precision Selector** - Data entry accuracy