mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 12:31:22 -05:00
Update activeContext.md and productContext.md with new project information and context
This commit is contained in:
@@ -0,0 +1,179 @@
|
||||
# Reactivated Implementation Analysis & Plan - January 19, 2025
|
||||
|
||||
## Current Project Analysis Completed
|
||||
|
||||
### Project Structure Overview
|
||||
- **Framework**: Django 5.0+ with comprehensive theme park management system
|
||||
- **Package Management**: UV (confirmed in .clinerules)
|
||||
- **Frontend Stack**: HTMX + AlpineJS + Tailwind CSS (to be replaced)
|
||||
- **Database**: PostGIS (GeoDjango enabled)
|
||||
- **Authentication**: Django Allauth with Google/Discord OAuth
|
||||
|
||||
### Django Apps Identified
|
||||
```
|
||||
Core Apps:
|
||||
- accounts (custom user model)
|
||||
- parks (main entity)
|
||||
- rides (park rides)
|
||||
- operators (park operators)
|
||||
- property_owners (park ownership)
|
||||
- manufacturers (ride manufacturers)
|
||||
- designers (ride designers)
|
||||
- reviews (user reviews)
|
||||
- media (photo management)
|
||||
- moderation (content moderation)
|
||||
- search (search functionality)
|
||||
- analytics (page view tracking)
|
||||
- location (geographic data)
|
||||
- history_tracking (audit trails)
|
||||
```
|
||||
|
||||
### Key Dependencies Analysis
|
||||
```python
|
||||
# Current Dependencies (UV-managed)
|
||||
Django = "^5.0"
|
||||
django-htmx = "^1.17.2" # TO BE REPLACED
|
||||
django-tailwind-cli = "^2.21.1" # COMPATIBLE
|
||||
django-allauth = "^0.60.1" # COMPATIBLE
|
||||
django-pghistory = "^3.5.2" # COMPATIBLE
|
||||
psycopg2-binary = "^2.9.9" # COMPATIBLE
|
||||
django-cleanup = "^8.0.0" # COMPATIBLE
|
||||
whitenoise = "^6.6.0" # COMPATIBLE
|
||||
```
|
||||
|
||||
### Template Structure Assessment
|
||||
```
|
||||
Current Templates (~100+ files):
|
||||
- templates/base/base.html (main layout)
|
||||
- templates/parks/*.html (park views)
|
||||
- templates/rides/*.html (ride views)
|
||||
- templates/accounts/*.html (auth views)
|
||||
- templates/moderation/*.html (admin views)
|
||||
- templates/*/partials/*.html (HTMX partials)
|
||||
```
|
||||
|
||||
## Implementation Strategy Decision
|
||||
|
||||
### Phase 1: Foundation Setup (Week 1)
|
||||
1. **Install reactivated package via UV**
|
||||
2. **Configure Django settings for dual template backends**
|
||||
3. **Create client/ directory structure**
|
||||
4. **Setup TypeScript configuration**
|
||||
5. **Create base React components**
|
||||
|
||||
### Phase 2: Core Entity Templates (Weeks 2-4)
|
||||
1. **Convert home.html to React**
|
||||
2. **Convert park list/detail templates**
|
||||
3. **Convert ride list/detail templates**
|
||||
4. **Create type-safe Django model interfaces**
|
||||
|
||||
### Phase 3: Authentication & Advanced Features (Weeks 5-6)
|
||||
1. **Convert authentication templates**
|
||||
2. **Convert search functionality**
|
||||
3. **Convert moderation interface**
|
||||
4. **Implement AJAX endpoints with @interface decorator**
|
||||
|
||||
### Phase 4: Testing & Optimization (Week 7)
|
||||
1. **Update test suite for React components**
|
||||
2. **Performance optimization**
|
||||
3. **Bundle size optimization**
|
||||
4. **Production deployment validation**
|
||||
|
||||
## Technical Decisions
|
||||
|
||||
### 1. Dual Template Backend Strategy
|
||||
**Decision**: Keep both Django and JSX template backends during transition
|
||||
**Rationale**: Allows gradual migration without breaking existing functionality
|
||||
|
||||
```python
|
||||
TEMPLATES = [
|
||||
{
|
||||
"BACKEND": "django.template.backends.django.DjangoTemplates",
|
||||
# ... existing config
|
||||
},
|
||||
{
|
||||
"BACKEND": "reactivated.backend.JSX",
|
||||
"DIRS": [],
|
||||
"APP_DIRS": True,
|
||||
"OPTIONS": {
|
||||
"context_processors": [
|
||||
"django.contrib.messages.context_processors.messages",
|
||||
"django.template.context_processors.csrf",
|
||||
"django.template.context_processors.request",
|
||||
"django.template.context_processors.static",
|
||||
]
|
||||
},
|
||||
},
|
||||
]
|
||||
```
|
||||
|
||||
### 2. Project Structure
|
||||
**Decision**: Create client/ directory at project root
|
||||
**Rationale**: Follows reactivated best practices
|
||||
|
||||
```
|
||||
thrillwiki_django_no_react/
|
||||
├── client/ # NEW: React components
|
||||
│ ├── index.tsx # Client entry point
|
||||
│ ├── components/ # Reusable components
|
||||
│ │ ├── Layout.tsx
|
||||
│ │ ├── forms/
|
||||
│ │ └── ui/
|
||||
│ ├── templates/ # Page templates
|
||||
│ │ ├── HomePage.tsx
|
||||
│ │ ├── parks/
|
||||
│ │ ├── rides/
|
||||
│ │ └── accounts/
|
||||
│ └── types/ # TypeScript definitions
|
||||
├── package.json # NEW: Node.js dependencies
|
||||
├── tsconfig.json # NEW: TypeScript config
|
||||
└── ... existing Django structure
|
||||
```
|
||||
|
||||
### 3. Type Safety Strategy
|
||||
**Decision**: Use reactivated's Pick utility for selective model serialization
|
||||
**Rationale**: Provides type safety while controlling data transfer
|
||||
|
||||
```python
|
||||
from reactivated import Pick, template
|
||||
from typing import Literal
|
||||
|
||||
# Example: Park detail template
|
||||
ParkPick = Pick[Park, Literal[
|
||||
"id", "name", "slug", "description", "status",
|
||||
"opening_date", "website", "operator.name",
|
||||
"location.latitude", "location.longitude"
|
||||
]]
|
||||
|
||||
@template
|
||||
class ParkDetail(NamedTuple):
|
||||
park: ParkPick
|
||||
rides_count: int
|
||||
photos: List[Photo]
|
||||
```
|
||||
|
||||
### 4. CSS/Styling Strategy
|
||||
**Decision**: Maintain Tailwind CSS within React components
|
||||
**Rationale**: Existing Tailwind setup is working well, no need to change
|
||||
|
||||
### 5. HTMX Migration Strategy
|
||||
**Decision**: Replace HTMX partial updates with React state management
|
||||
**Rationale**: React provides better state management and component reusability
|
||||
|
||||
## Entity Relationship Compliance
|
||||
All implementations will follow the established .clinerules entity relationships:
|
||||
- Parks → Operators (required)
|
||||
- Parks → PropertyOwners (optional)
|
||||
- Rides → Parks (required)
|
||||
- Rides → Manufacturers/Designers (optional)
|
||||
|
||||
## Next Steps
|
||||
1. Begin Phase 1 implementation
|
||||
2. Install reactivated package using UV
|
||||
3. Configure Django settings
|
||||
4. Create basic React infrastructure
|
||||
|
||||
---
|
||||
**Decision Date**: 2025-01-19
|
||||
**Status**: Implementation Plan Approved
|
||||
**Estimated Timeline**: 7 weeks total
|
||||
Reference in New Issue
Block a user