mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 17:11:09 -05:00
feat: complete monorepo structure with frontend and shared resources
- Add complete backend/ directory with full Django application - Add frontend/ directory with Vite + TypeScript setup ready for Next.js - Add comprehensive shared/ directory with: - Complete documentation and memory-bank archives - Media files and avatars (letters, park/ride images) - Deployment scripts and automation tools - Shared types and utilities - Add architecture/ directory with migration guides - Configure pnpm workspace for monorepo development - Update .gitignore to exclude .django_tailwind_cli/ build artifacts - Preserve all historical documentation in shared/docs/memory-bank/ - Set up proper structure for full-stack development with shared resources
This commit is contained in:
196
shared/docs/memory-bank/documentation/Architecture.md
Normal file
196
shared/docs/memory-bank/documentation/Architecture.md
Normal file
@@ -0,0 +1,196 @@
|
||||
# System Architecture Documentation
|
||||
|
||||
## Overview
|
||||
ThrillWiki is a Django-based web platform built with a modular architecture focusing on theme park information management, user reviews, and content moderation.
|
||||
|
||||
## Technology Stack
|
||||
|
||||
### Backend
|
||||
- **Framework**: Django 5.1.6
|
||||
- **API**: Django REST Framework 3.15.2
|
||||
- **WebSocket Support**: Channels 4.2.0 with Redis
|
||||
- **Authentication**: django-allauth, OAuth Toolkit
|
||||
- **Database**: PostgreSQL with django-pghistory
|
||||
|
||||
### Frontend
|
||||
- **Templating**: Django Templates
|
||||
- **CSS Framework**: Tailwind CSS
|
||||
- **Enhancement**: HTMX, JavaScript
|
||||
- **Asset Management**: django-webpack-loader
|
||||
|
||||
### Infrastructure
|
||||
- **Static Files**: WhiteNoise 6.9.0
|
||||
- **Media Storage**: Local filesystem with custom storage backends
|
||||
- **Caching**: Redis (shared with WebSocket layer)
|
||||
|
||||
## System Components
|
||||
|
||||
### Core Applications
|
||||
|
||||
1. **Parks Module**
|
||||
- Park information management
|
||||
- Geographic data handling
|
||||
- Operating hours tracking
|
||||
- Integration with location services
|
||||
|
||||
2. **Rides Module**
|
||||
- Ride specifications
|
||||
- Manufacturer/Designer attribution
|
||||
- Historical data tracking
|
||||
- Technical details management
|
||||
|
||||
3. **Reviews System**
|
||||
- User-generated content
|
||||
- Media attachments
|
||||
- Rating framework
|
||||
- Integration with moderation
|
||||
|
||||
4. **Moderation System**
|
||||
- Content review workflow
|
||||
- Quality control mechanisms
|
||||
- User management
|
||||
- Verification processes
|
||||
|
||||
5. **Companies Module**
|
||||
- Company profiles
|
||||
- Verification system
|
||||
- Official update management
|
||||
- Park operator features
|
||||
|
||||
### Service Layer
|
||||
|
||||
1. **Authentication Service**
|
||||
```python
|
||||
# Key authentication flows
|
||||
User Authentication → JWT Token → Protected Resources
|
||||
Social Auth → Profile Creation → Platform Access
|
||||
```
|
||||
|
||||
2. **Media Service**
|
||||
```python
|
||||
# Media handling workflow
|
||||
Upload → Processing → Storage → Delivery
|
||||
```
|
||||
|
||||
3. **Analytics Service**
|
||||
```python
|
||||
# Analytics pipeline
|
||||
User Action → Event Tracking → Processing → Insights
|
||||
```
|
||||
|
||||
## Data Flow Architecture
|
||||
|
||||
```
|
||||
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
|
||||
│ Client │ ──→ │ Django │ ──→ │ Database │
|
||||
│ Browser │ ←── │ Server │ ←── │ (Postgres) │
|
||||
└─────────────┘ └──────────────┘ └─────────────┘
|
||||
↑ ↓
|
||||
┌──────────────┐
|
||||
│ Services │
|
||||
│ (Redis/S3) │
|
||||
└──────────────┘
|
||||
```
|
||||
|
||||
## Security Architecture
|
||||
|
||||
1. **Authentication Flow**
|
||||
- JWT-based authentication
|
||||
- Social authentication integration
|
||||
- Session management
|
||||
- Permission-based access control
|
||||
|
||||
2. **Data Protection**
|
||||
- Input validation
|
||||
- XSS prevention
|
||||
- CSRF protection
|
||||
- SQL injection prevention
|
||||
|
||||
## Deployment Model
|
||||
|
||||
### Production Environment
|
||||
```
|
||||
├── Application Server (Daphne/ASGI)
|
||||
├── Database (PostgreSQL)
|
||||
├── Cache/Message Broker (Redis)
|
||||
├── Static Files (WhiteNoise)
|
||||
└── Media Storage (Filesystem/S3)
|
||||
```
|
||||
|
||||
### Development Environment
|
||||
```
|
||||
├── Local Django Server
|
||||
├── Local PostgreSQL
|
||||
├── Local Redis
|
||||
└── Local File Storage
|
||||
```
|
||||
|
||||
## Monitoring and Scaling
|
||||
|
||||
1. **Performance Monitoring**
|
||||
- Page load metrics
|
||||
- Database query analysis
|
||||
- Cache hit rates
|
||||
- API response times
|
||||
|
||||
2. **Scaling Strategy**
|
||||
- Horizontal scaling of web servers
|
||||
- Database read replicas
|
||||
- Cache layer expansion
|
||||
- Media CDN integration
|
||||
|
||||
## Search Architecture
|
||||
|
||||
### Search Infrastructure
|
||||
- **Base Pattern**: [`BaseAutocomplete`](core/forms.py:1) provides authentication-first autocomplete foundation
|
||||
- **Park Search**: [`ParkAutocomplete`](search/mixins.py:1) + [`ParkSearchForm`](search/forms.py:1) with HTMX integration
|
||||
- **Ride Search**: Planned extension following same pattern with park relationship context
|
||||
|
||||
### Search Components
|
||||
1. **Autocomplete Layer**
|
||||
- Authentication requirement enforced at base level
|
||||
- Query limiting (10 results) for performance
|
||||
- HTMX-driven real-time suggestions
|
||||
|
||||
2. **Form Layer**
|
||||
- Django forms with autocomplete widgets
|
||||
- Filter integration for advanced search
|
||||
- Clean validation and error handling
|
||||
|
||||
3. **Frontend Integration**
|
||||
- HTMX for dynamic updates (`hx-get`, `hx-trigger`)
|
||||
- AlpineJS for local state management
|
||||
- Tailwind CSS for consistent styling
|
||||
|
||||
### Database Optimization
|
||||
- Indexes on searchable fields (`name`, foreign keys)
|
||||
- `select_related()` for relationship queries
|
||||
- Query result limiting for performance
|
||||
|
||||
## Integration Points
|
||||
|
||||
1. **External Services**
|
||||
- Email service (ForwardEmail.net)
|
||||
- Social authentication providers
|
||||
- Geographic data services
|
||||
- Media processing services
|
||||
|
||||
2. **Internal Services**
|
||||
- WebSocket notifications
|
||||
- Background tasks
|
||||
- Media processing
|
||||
- Analytics processing
|
||||
|
||||
## System Requirements
|
||||
|
||||
### Minimum Requirements
|
||||
- Python 3.11+
|
||||
- PostgreSQL 13+
|
||||
- Redis 6+
|
||||
- Node.js 18+ (for frontend builds)
|
||||
|
||||
### Development Tools
|
||||
- black (code formatting)
|
||||
- flake8 (linting)
|
||||
- pytest (testing)
|
||||
- tailwind CLI (CSS processing)
|
||||
Reference in New Issue
Block a user