Files
thrillwiki_django_no_react/memory-bank/features/search/rides.md
pacnpal de05a5abda Add comprehensive audit reports, design assessment, and non-authenticated features testing for ThrillWiki application
- Created critical functionality audit report identifying 7 critical issues affecting production readiness.
- Added design assessment report highlighting exceptional design quality and minor cosmetic fixes needed.
- Documented non-authenticated features testing results confirming successful functionality and public access.
- Implemented ride search form with autocomplete functionality and corresponding templates for search results.
- Developed tests for ride autocomplete functionality, ensuring proper filtering and authentication checks.
2025-06-25 20:30:02 -04:00

3.0 KiB
Raw Blame History

# Ride Search Feature Specification ## Overview Extend the existing park search infrastructure to support searching rides. This follows the established:
- Authentication-first
- BaseAutocomplete pattern
- HTMX + AlpineJS frontend
Rides are related to parks via a ForeignKey. Search results must reference both ride and parent park. ## Technical Specification ### Models & Filters - Model: Ride in rides/models.py with fields name, park (ForeignKey → Park), duration, thrill_rating, etc.
- Filter: RideFilter in search/filters.py (create if missing) supporting min_thrill, max_duration, and park__id. ### Autocomplete - Class RideAutocomplete extends BaseAutocomplete.
- Query: Ride.objects.filter(name__icontains=query) limited to 10 results. ### Search Form - Class RideSearchForm uses autocomplete widget bound to RideAutocomplete.
- Fields: query (CharField), park (HiddenField or Select), min_thrill, max_duration. ### Views & Templates - View RideSearchView decorated with @login_required.
- URL route 'search/rides/' in search/urls.py.
- Partial template search/templates/search/partials/_ride_search.html with HTMX attributes (hx-get, hx-trigger="input changed delay:300ms"). ## File & Component Structure - memory-bank/features/search/rides.md
- search/mixins.py add RideAutocomplete
- search/forms.py add RideSearchForm
- search/urls.py register ride endpoints (autocomplete/, results/)
- rides/views.py add RideSearchView
- search/templates/search/partials/_ride_search.html
- rides/templates/rides/partials/ride_results.html
## Integration Points - Combined search component toggles between park and ride modes.
- Ride result links to ParkDetailView for context.
- Shared styles and layout from search/templates/search/layouts/base.html. ## Database Query Optimization - Add DB index on Ride.name and Ride.park_id.
- Use select_related('park') in view/queryset.
- Limit autocomplete to top 10 for responsiveness. ## Frontend Component Design - HTMX: <input> with hx-get="/search/rides/autocomplete/", update target container.
- AlpineJS: manage local state for selection, clearing on blur.
- Reuse CSS classes from park search for unified UX. ## Testing Strategy - Unit tests for RideAutocomplete.
- Form tests for RideSearchForm.
- View tests (login_required, filter logic) in [rides/tests/test_search_view.py].
- HTMX integration: AJAX responses include expected HTML using pytest-django + django-htmx.
- Performance: benchmark large resultset to ensure truncation and quick response.