--- description: Condensed ThrillWiki Django project context with architecture, patterns, and mandatory Context7 integration author: ThrillWiki Development Team version: 2.1 globs: ["**/*.py", "**/*.html", "**/*.js", "**/*.css", "**/*.md"] tags: ["django", "architecture", "context7-integration", "thrillwiki"] --- # ThrillWiki Django Project Context ## Project Overview Theme park database platform with Django REST Framework serving 120+ API endpoints for parks, rides, companies, and users. ## Core Architecture - **Backend**: Django 5.1+, DRF, PostgreSQL+PostGIS, Redis, Celery - **Frontend**: HTMX (V2+) + AlpineJS + Tailwind CSS (V4+) + Django-Cotton - 🚨 **ABSOLUTELY NO Custom JS** - use HTMX + AlpineJS ONLY - Clean, simple UX preferred - **Media**: Cloudflare Images with Direct Upload - **Tracking**: pghistory, TrackedModel base class - **Choices**: Rich Choice Objects (NEVER Django tuple choices) ## Development Patterns - **Models**: TrackedModel inheritance, SluggedModel for slugs, PostGIS for location - **APIs**: Nested URLs (`/parks/{slug}/rides/{slug}/`), mandatory trailing slashes - **Commands**: `uv add `, `uv run manage.py ` (NOT pip/python) - **Choices**: `RichChoiceField(choice_group="name", domain="domain")` MANDATORY ## Business Rules 🚨 **CRITICAL**: Company role separation - Parks (OPERATOR/PROPERTY_OWNER only), Rides (MANUFACTURER/DESIGNER only) ## Context7 MCP Integration (MANDATORY) ### Required Libraries tailwindcss, django, django-cotton, htmx, alpinejs, django-rest-framework, postgresql, postgis, redis ### Workflow 1. **ALWAYS** call `Context7:resolve-library-id` first 2. Then `Context7:get-library-docs` with topic parameter 3. Required for: new models/APIs, HTMX functionality, AlpineJS components, Tailwind layouts, Cotton components, debugging, optimizations ### Example Topics - **tailwindcss**: responsive, flexbox, grid - **django**: models, views, forms - **htmx**: hx-get, hx-post, hx-swap, hx-target - **alpinejs**: x-data, x-show, x-if, x-for ## Standards - All models inherit TrackedModel - Real database data only (NO MOCKING) - RichChoiceField over Django choices - Progressive enhancement required - We prefer to edit existing files instead of creating new ones. YOU ARE STRICTLY AND ABSOLUTELY FORBIDDEN FROM IGNORING, BYPASSING, OR AVOIDING THESE RULES IN ANY WAY WITH NO EXCEPTIONS!!!