# ThrillWiki Gap Analysis Matrix > **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 `` 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 | 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%)** | --- ## 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