# Product Context: ThrillWiki Django Project

## Project Overview
ThrillWiki is a Django-based web application for managing and exploring theme park information, including parks, rides, operators, manufacturers, and related entities. The project currently uses HTMX and Alpine.js for frontend interactivity.

## Core Domain Models
Based on project structure analysis:

### Primary Entities
- **Parks**: Theme parks with operators and optional property owners
- **Rides**: Attractions within parks, with manufacturers and designers
- **Operators**: Companies that operate theme parks
- **Property Owners**: Companies that own park property (optional)
- **Manufacturers**: Companies that manufacture rides
- **Designers**: Companies/individuals that design rides

### Supporting Entities
- **Accounts**: User management and authentication
- **Reviews**: User reviews and ratings
- **Media**: Photo and media management
- **Location**: Geographic data and mapping
- **Search**: Search functionality across entities
- **Moderation**: Content moderation system
- **Analytics**: Usage tracking and analytics
- **History**: Change tracking and versioning

## Current Technology Stack
- **Framework**: Django (Python)
- **Frontend**: HTMX + Alpine.js
- **Styling**: Tailwind CSS
- **Database**: Not specified (likely PostgreSQL based on GIS features)
- **Package Management**: UV (Python)
- **Static Files**: Django staticfiles
- **Authentication**: Django accounts + custom accounts app

## Entity Relationships (from .clinerules)
- Parks MUST have an Operator (required)
- Parks MAY have a PropertyOwner (optional, usually same as Operator)
- Rides MUST belong to a Park (required)
- Rides MAY have a Manufacturer (optional)
- Rides MAY have a Designer (optional)
- No direct Company entity references allowed

## Current Frontend State
- Uses HTMX for dynamic content loading
- Alpine.js for client-side interactivity
- Tailwind CSS for styling
- Template structure organized by Django apps
- Partial templates for HTMX responses
- Photo gallery and map functionality
- Search and filtering capabilities

## Key Features Identified
- Park and ride management
- User authentication and profiles
- Photo upload and management
- Geographic location handling
- Search and filtering
- Content moderation
- Review system
- Responsive design (existing)

## Business Logic
- Theme park enthusiast community
- User-generated content with moderation
- Geographic-based park discovery
- Ride tracking and reviews
- Photo sharing and galleries
- Community-driven content creation

## Current Template Structure
```
templates/
├── base/base.html (main layout)
├── home.html (homepage)
├── account/ (authentication)
├── accounts/ (user profiles)
├── designers/ (designer pages)
├── manufacturers/ (manufacturer pages)
├── operators/ (operator pages)
├── property_owners/ (property owner pages)
├── parks/ (park management)
├── rides/ (ride management)
├── moderation/ (admin moderation)
├── media/ (photo management)
├── location/ (geographic widgets)
└── search/ (search functionality)
```

## Static Assets
```
static/
├── js/ (Alpine.js, HTMX, custom scripts)
├── css/ (Tailwind CSS)
└── images/placeholders/ (default images)
```

## Identified Apps
- accounts (user management)
- analytics (tracking)
- core (main app)
- designers (ride designers)
- email_service (notifications)
- history (change tracking)
- history_tracking (versioning)
- location (geographic data)
- manufacturers (ride manufacturers)
- media (photo/file management)
- moderation (content moderation)
- operators (park operators)
- parks (theme parks)
- property_owners (property ownership)
- reviews (user reviews)
- rides (park attractions)
- search (search functionality)

## Development Environment
- Uses UV for package management
- Tailwind CSS with hot reload
- Development server: `uv run manage.py tailwind runserver`
- Testing framework available
- E2E tests configured