mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 11:51:10 -05:00
6adbaf885f74d3f5395769bf416293d2ef0effa7
Replaces grid layout with flexbox in enhanced_header.html to resolve column width issues caused by gap-8. Replit-Commit-Author: Agent Replit-Commit-Session-Id: c537be14-ffc2-48de-88ef-2bdd9e6ae15a Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/d6d61dac-164d-45dd-929f-7dcdfd771b64/c537be14-ffc2-48de-88ef-2bdd9e6ae15a/DIBq8v8
ThrillWiki Backend
Django REST API backend for the ThrillWiki monorepo.
🏗️ Architecture
This backend follows Django best practices with a modular app structure:
backend/
├── apps/ # Django applications
│ ├── accounts/ # User management
│ ├── parks/ # Theme park data
│ ├── rides/ # Ride information
│ ├── moderation/ # Content moderation
│ ├── location/ # Geographic data
│ ├── media/ # File management
│ ├── email_service/ # Email functionality
│ └── core/ # Core utilities
├── config/ # Django configuration
│ ├── django/ # Settings files
│ └── settings/ # Modular settings
├── templates/ # Django templates
├── static/ # Static files
└── tests/ # Test files
🛠️ Technology Stack
- Django 5.0+ - Web framework
- Django REST Framework - API framework
- PostgreSQL - Primary database
- Redis - Caching and sessions
- UV - Python package management
- Celery - Background task processing
🚀 Quick Start
Prerequisites
- Python 3.11+
- uv package manager
- PostgreSQL 14+
- Redis 6+
Setup
-
Install dependencies
cd backend uv sync -
Environment configuration
cp .env.example .env # Edit .env with your settings -
Database setup
uv run manage.py migrate uv run manage.py createsuperuser -
Start development server
uv run manage.py runserver
🔧 Configuration
Environment Variables
Required environment variables:
# Database
DATABASE_URL=postgresql://user:pass@localhost/thrillwiki
# Django
SECRET_KEY=your-secret-key
DEBUG=True
DJANGO_SETTINGS_MODULE=config.django.local
# Redis
REDIS_URL=redis://localhost:6379
# Email (optional)
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_USE_TLS=True
EMAIL_HOST_USER=your-email@gmail.com
EMAIL_HOST_PASSWORD=your-app-password
Settings Structure
config/django/base.py- Base settingsconfig/django/local.py- Development settingsconfig/django/production.py- Production settingsconfig/django/test.py- Test settings
📁 Apps Overview
Core Apps
- accounts - User authentication and profile management
- parks - Theme park models and operations
- rides - Ride information and relationships
- core - Shared utilities and base classes
Support Apps
- moderation - Content moderation workflows
- location - Geographic data and services
- media - File upload and management
- email_service - Email sending and templates
🔌 API Endpoints
Base URL: http://localhost:8000/api/
Authentication
POST /auth/login/- User loginPOST /auth/logout/- User logoutPOST /auth/register/- User registration
Parks
GET /parks/- List parksGET /parks/{id}/- Park detailsPOST /parks/- Create park (admin)
Rides
GET /rides/- List ridesGET /rides/{id}/- Ride detailsGET /parks/{park_id}/rides/- Rides by park
🧪 Testing
# Run all tests
uv run manage.py test
# Run specific app tests
uv run manage.py test apps.parks
# Run with coverage
uv run coverage run manage.py test
uv run coverage report
🔧 Management Commands
Custom management commands:
# Import park data
uv run manage.py import_parks data/parks.json
# Generate test data
uv run manage.py generate_test_data
# Clean up expired sessions
uv run manage.py clearsessions
📊 Database
Entity Relationships
- Parks have Operators (required) and PropertyOwners (optional)
- Rides belong to Parks and may have Manufacturers/Designers
- Users can create submissions and moderate content
Migrations
# Create migrations
uv run manage.py makemigrations
# Apply migrations
uv run manage.py migrate
# Show migration status
uv run manage.py showmigrations
🔐 Security
- CORS configured for frontend integration
- CSRF protection enabled
- JWT token authentication
- Rate limiting on API endpoints
- Input validation and sanitization
📈 Performance
- Database query optimization
- Redis caching for frequent queries
- Background task processing with Celery
- Database connection pooling
🚀 Deployment
See the Deployment Guide for production setup.
🐛 Debugging
Development Tools
- Django Debug Toolbar
- Django Extensions
- Silk profiler for performance analysis
Logging
Logs are written to:
- Console (development)
- Files in
logs/directory (production) - External logging service (production)
🤝 Contributing
- Follow Django coding standards
- Write tests for new features
- Update documentation
- Run linting:
uv run flake8 . - Format code:
uv run black .
Description
This is a Django-based theme park management system called ThrillWiki that provides comprehensive functionality for managing parks, rides, locations, and related entities. The system includes features for user accounts, content moderation, history tracking, media management, and analytics. It follows a modular architecture with separate Django apps for each major feature area and uses Tailwind CSS for frontend styling. The project emphasizes maintainability through extensive documentation and decision tracking in dedicated memory-bank directories.
https://www.thrillwiki.com
Languages
Python
61.1%
HTML
31.4%
CSS
6.5%
JavaScript
0.9%