mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-22 13:31:18 -05:00
311 lines
14 KiB
Markdown
311 lines
14 KiB
Markdown
# ThrillWiki Next.js Development Prompt
|
|
|
|
## Project Overview
|
|
Build a comprehensive theme park and ride database platform using Next.js. ThrillWiki is a community-driven platform where enthusiasts can discover parks, explore rides, share reviews, and contribute to a moderated knowledge base about theme parks worldwide.
|
|
|
|
## Core Application Domain
|
|
|
|
### Primary Entities
|
|
- **Parks**: Theme parks, amusement parks, water parks with detailed information, locations, operating details
|
|
- **Rides**: Individual ride installations with technical specifications, manufacturer details, operational status
|
|
- **Companies**: Manufacturers, operators, designers, property owners with different roles
|
|
- **Users**: Community members with profiles, preferences, reviews, and top lists
|
|
- **Reviews**: User-generated content with ratings, media, and moderation workflow
|
|
- **Locations**: Geographic data for parks and rides with PostGIS-style coordinate handling
|
|
|
|
### Key Relationships
|
|
- Parks contain multiple rides and are operated by companies
|
|
- Rides belong to parks, have manufacturers/designers, and reference ride models
|
|
- Ride models are templates created by manufacturers with technical specifications
|
|
- Users create reviews for parks and rides, maintain top lists, have notification preferences
|
|
- Companies have multiple roles (manufacturer, operator, designer, property owner)
|
|
- All content goes through moderation workflows before publication
|
|
|
|
## User Personas & Workflows
|
|
|
|
### Theme Park Enthusiasts
|
|
- Browse and discover parks by location, type, and features
|
|
- Search for specific rides and view detailed technical specifications
|
|
- Plan park visits with operating information and ride availability
|
|
- Track personal ride credits and maintain top lists
|
|
- Read authentic reviews from other enthusiasts
|
|
|
|
### Content Contributors
|
|
- Submit new park and ride information for moderation
|
|
- Upload photos with proper attribution and categorization
|
|
- Write detailed reviews with ratings and media attachments
|
|
- Maintain personal profiles with ride statistics and achievements
|
|
- Participate in community discussions and rankings
|
|
|
|
### Park Industry Professionals
|
|
- Maintain verified company profiles with official information
|
|
- Update park operating details, ride status, and announcements
|
|
- Access analytics and engagement metrics for their properties
|
|
- Manage official media and promotional content
|
|
|
|
## Core Features to Implement
|
|
|
|
### 1. Park Discovery & Information System
|
|
- **Park Listings**: Filterable grid/list views with search, location-based filtering, park type categories
|
|
- **Park Detail Pages**: Comprehensive information including rides list, operating hours, location maps, photo galleries
|
|
- **Interactive Maps**: Geographic visualization of parks with clustering, zoom controls, and location-based search
|
|
- **Advanced Search**: Multi-criteria search across parks, rides, locations, and companies
|
|
|
|
### 2. Ride Database & Technical Specifications
|
|
- **Ride Catalog**: Comprehensive database with manufacturer information, technical specs, operational history
|
|
- **Ride Detail Pages**: In-depth information including statistics, photos, reviews, and related rides
|
|
- **Manufacturer Profiles**: Company information with ride model catalogs and installation history
|
|
- **Technical Comparisons**: Side-by-side ride comparisons with filterable specifications
|
|
|
|
### 3. User-Generated Content System
|
|
- **Review Platform**: Structured review forms with ratings, text, photo uploads, and helpful voting
|
|
- **Photo Management**: Upload system with automatic optimization, categorization, and attribution tracking
|
|
- **Top Lists**: Personal ranking systems for rides, parks, and experiences with drag-and-drop reordering
|
|
- **User Profiles**: Personal statistics, ride credits, achievement tracking, and social features
|
|
|
|
### 4. Content Moderation Workflow
|
|
- **Submission Queue**: Administrative interface for reviewing user-submitted content
|
|
- **Approval Process**: Multi-stage review with rejection reasons, feedback, and resubmission options
|
|
- **Quality Control**: Automated checks for duplicate content, inappropriate material, and data validation
|
|
- **User Management**: Moderation tools for user accounts, banning, and content removal
|
|
|
|
### 5. Location & Geographic Services
|
|
- **Location Search**: Address-based search with autocomplete and geographic boundaries
|
|
- **Proximity Features**: Find nearby parks, distance calculations, and regional groupings
|
|
- **Map Integration**: Interactive maps with custom markers, clustering, and detailed overlays
|
|
- **Geographic Filtering**: Location-based content filtering and discovery
|
|
|
|
## Technical Architecture Requirements
|
|
|
|
### Frontend Stack
|
|
- **Next.js 14+** with App Router for modern React development
|
|
- **TypeScript** for type safety and better developer experience
|
|
- **Tailwind CSS** for utility-first styling and responsive design
|
|
- **Shadcn/ui** for consistent, accessible component library
|
|
- **React Hook Form** with Zod validation for form handling
|
|
- **TanStack Query** for server state management and caching
|
|
- **Zustand** for client-side state management
|
|
- **Next-Auth** for authentication and session management
|
|
|
|
### Data Management
|
|
- **API Integration**: RESTful API consumption with comprehensive error handling
|
|
- **Image Optimization**: Cloudflare Images integration with multiple variants
|
|
- **Caching Strategy**: Multi-level caching with SWR patterns and cache invalidation
|
|
- **Search Implementation**: Client-side and server-side search with debouncing
|
|
- **Infinite Scrolling**: Performance-optimized pagination for large datasets
|
|
|
|
### UI/UX Patterns
|
|
- **Responsive Design**: Mobile-first approach with tablet and desktop optimizations
|
|
- **Dark/Light Themes**: User preference-based theming with system detection
|
|
- **Loading States**: Skeleton screens, progressive loading, and optimistic updates
|
|
- **Error Boundaries**: Graceful error handling with user-friendly messages
|
|
- **Accessibility**: WCAG compliance with keyboard navigation and screen reader support
|
|
|
|
## Key Components to Build
|
|
|
|
### Layout & Navigation
|
|
- **Header Component**: Logo, navigation menu, user authentication, search bar, theme toggle
|
|
- **Sidebar Navigation**: Collapsible menu with user context and quick actions
|
|
- **Footer Component**: Links, social media, legal information, and site statistics
|
|
- **Breadcrumb Navigation**: Contextual navigation with proper hierarchy
|
|
|
|
### Park Components
|
|
- **ParkCard**: Compact park information with image, basic details, and quick actions
|
|
- **ParkGrid**: Responsive grid layout with filtering and sorting options
|
|
- **ParkDetail**: Comprehensive park information with tabbed sections
|
|
- **ParkMap**: Interactive map showing park location and nearby attractions
|
|
- **OperatingHours**: Dynamic display of park hours with seasonal variations
|
|
|
|
### Ride Components
|
|
- **RideCard**: Ride preview with key specifications and ratings
|
|
- **RideList**: Filterable list with sorting and search capabilities
|
|
- **RideDetail**: Complete ride information with technical specifications
|
|
- **RideStats**: Visual representation of ride statistics and comparisons
|
|
- **RidePhotos**: Photo gallery with lightbox and attribution information
|
|
|
|
### User Interface Components
|
|
- **UserProfile**: Personal information, statistics, and preference management
|
|
- **ReviewForm**: Structured review creation with rating inputs and media upload
|
|
- **TopListManager**: Drag-and-drop interface for creating and managing rankings
|
|
- **NotificationCenter**: Real-time notifications with read/unread states
|
|
- **SearchInterface**: Advanced search with filters, suggestions, and recent searches
|
|
|
|
### Content Management
|
|
- **SubmissionForm**: Content submission interface with validation and preview
|
|
- **ModerationQueue**: Administrative interface for content review and approval
|
|
- **PhotoUpload**: Drag-and-drop photo upload with progress tracking and optimization
|
|
- **ContentEditor**: Rich text editor for descriptions and review content
|
|
|
|
## Data Models & API Integration
|
|
|
|
### API Endpoints Structure
|
|
```typescript
|
|
// Parks API
|
|
GET /api/parks/ - List parks with filtering and pagination
|
|
GET /api/parks/{slug}/ - Park details with rides and reviews
|
|
GET /api/parks/{slug}/rides/ - Rides at specific park
|
|
GET /api/parks/search/ - Advanced park search
|
|
|
|
// Rides API
|
|
GET /api/rides/ - List rides with filtering
|
|
GET /api/rides/{park_slug}/{ride_slug}/ - Ride details
|
|
GET /api/rides/manufacturers/{slug}/ - Manufacturer information
|
|
GET /api/rides/search/ - Advanced ride search
|
|
|
|
// User API
|
|
GET /api/users/profile/ - Current user profile
|
|
PUT /api/users/profile/ - Update user profile
|
|
GET /api/users/{username}/ - Public user profile
|
|
POST /api/users/reviews/ - Create review
|
|
|
|
// Content API
|
|
POST /api/submissions/ - Submit new content
|
|
GET /api/submissions/status/ - Check submission status
|
|
POST /api/photos/upload/ - Upload photos
|
|
GET /api/moderation/queue/ - Moderation queue (admin)
|
|
```
|
|
|
|
### TypeScript Interfaces
|
|
```typescript
|
|
interface Park {
|
|
id: number;
|
|
name: string;
|
|
slug: string;
|
|
description: string;
|
|
status: string;
|
|
park_type: string;
|
|
location: ParkLocation;
|
|
operator: Company;
|
|
opening_date: string;
|
|
ride_count: number;
|
|
coaster_count: number;
|
|
average_rating: number;
|
|
banner_image: Photo;
|
|
card_image: Photo;
|
|
url: string;
|
|
}
|
|
|
|
interface Ride {
|
|
id: number;
|
|
name: string;
|
|
slug: string;
|
|
description: string;
|
|
park: Park;
|
|
category: string;
|
|
manufacturer: Company;
|
|
ride_model: RideModel;
|
|
status: string;
|
|
opening_date: string;
|
|
height_requirement: number;
|
|
average_rating: number;
|
|
coaster_stats?: RollerCoasterStats;
|
|
}
|
|
|
|
interface User {
|
|
id: number;
|
|
username: string;
|
|
display_name: string;
|
|
profile: UserProfile;
|
|
role: string;
|
|
theme_preference: string;
|
|
privacy_level: string;
|
|
}
|
|
```
|
|
|
|
## Authentication & User Management
|
|
|
|
### Authentication Flow
|
|
- **Registration**: Email-based signup with verification workflow
|
|
- **Login**: Username/email login with remember me option
|
|
- **Social Auth**: Integration with Google, Facebook, Discord for quick signup
|
|
- **Password Reset**: Secure password reset with email verification
|
|
- **Two-Factor Auth**: Optional 2FA with authenticator app support
|
|
|
|
### User Roles & Permissions
|
|
- **Regular Users**: Create reviews, manage profiles, submit content
|
|
- **Verified Contributors**: Trusted users with expedited content approval
|
|
- **Moderators**: Content review, user management, community oversight
|
|
- **Administrators**: Full system access, user role management, system configuration
|
|
|
|
### Privacy & Security
|
|
- **Privacy Controls**: Granular privacy settings for profile visibility and data sharing
|
|
- **Content Moderation**: Automated and manual content review processes
|
|
- **Data Protection**: GDPR compliance with data export and deletion options
|
|
- **Security Features**: Login notifications, session management, suspicious activity detection
|
|
|
|
## Performance & Optimization
|
|
|
|
### Loading & Caching
|
|
- **Image Optimization**: Cloudflare Images with responsive variants and lazy loading
|
|
- **API Caching**: Intelligent caching with stale-while-revalidate patterns
|
|
- **Static Generation**: Pre-generated pages for popular content with ISR
|
|
- **Code Splitting**: Route-based and component-based code splitting for optimal loading
|
|
|
|
### Search & Filtering
|
|
- **Client-Side Search**: Fast text search with debouncing and result highlighting
|
|
- **Server-Side Filtering**: Complex filtering with URL state management
|
|
- **Infinite Scrolling**: Performance-optimized pagination for large datasets
|
|
- **Search Analytics**: Track popular searches and optimize content discovery
|
|
|
|
### Mobile Optimization
|
|
- **Responsive Design**: Mobile-first approach with touch-friendly interfaces
|
|
- **Progressive Web App**: PWA features with offline capability and push notifications
|
|
- **Performance Budgets**: Strict performance monitoring with Core Web Vitals tracking
|
|
- **Accessibility**: Full keyboard navigation and screen reader compatibility
|
|
|
|
## Content Management & Moderation
|
|
|
|
### Submission Workflow
|
|
- **Content Forms**: Structured forms for parks, rides, and reviews with validation
|
|
- **Draft System**: Save and resume content creation with auto-save functionality
|
|
- **Preview Mode**: Real-time preview of content before submission
|
|
- **Submission Tracking**: Status updates and feedback throughout review process
|
|
|
|
### Moderation Interface
|
|
- **Review Queue**: Prioritized queue with filtering and batch operations
|
|
- **Approval Workflow**: Multi-stage review with detailed feedback options
|
|
- **Quality Metrics**: Track approval rates, review times, and content quality
|
|
- **User Reputation**: Contributor scoring system based on submission quality
|
|
|
|
### Media Management
|
|
- **Photo Upload**: Drag-and-drop interface with progress tracking and error handling
|
|
- **Image Processing**: Automatic optimization, resizing, and format conversion
|
|
- **Attribution Tracking**: Photographer credits and copyright information
|
|
- **Bulk Operations**: Batch photo management and organization tools
|
|
|
|
## Analytics & Insights
|
|
|
|
### User Analytics
|
|
- **Engagement Tracking**: Page views, time on site, and user journey analysis
|
|
- **Content Performance**: Popular parks, rides, and reviews with engagement metrics
|
|
- **Search Analytics**: Popular search terms and content discovery patterns
|
|
- **User Behavior**: Registration funnels, retention rates, and feature adoption
|
|
|
|
### Content Insights
|
|
- **Submission Metrics**: Content creation rates, approval times, and quality scores
|
|
- **Review Analytics**: Rating distributions, helpful votes, and review engagement
|
|
- **Geographic Data**: Popular regions, park visit patterns, and location-based insights
|
|
- **Trending Content**: Real-time trending parks, rides, and discussions
|
|
|
|
## Development Guidelines
|
|
|
|
### Code Organization
|
|
- **Feature-Based Structure**: Organize code by features rather than file types
|
|
- **Component Library**: Reusable components with Storybook documentation
|
|
- **Custom Hooks**: Shared logic extraction with proper TypeScript typing
|
|
- **Utility Functions**: Common operations with comprehensive testing
|
|
|
|
### Testing Strategy
|
|
- **Unit Testing**: Component and utility function testing with Jest and React Testing Library
|
|
- **Integration Testing**: API integration and user workflow testing
|
|
- **E2E Testing**: Critical user journeys with Playwright or Cypress
|
|
- **Performance Testing**: Core Web Vitals monitoring and performance regression testing
|
|
|
|
### Deployment & DevOps
|
|
- **Environment Management**: Development, staging, and production environments
|
|
- **CI/CD Pipeline**: Automated testing, building, and deployment
|
|
- **Monitoring**: Error tracking, performance monitoring, and user analytics
|
|
- **Security**: Regular security audits, dependency updates, and vulnerability scanning
|
|
|
|
This comprehensive platform should provide theme park enthusiasts with a rich, engaging experience while maintaining high content quality through effective moderation and community management systems.
|