mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 13:51:09 -05:00
- 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
104 lines
2.9 KiB
Python
104 lines
2.9 KiB
Python
"""
|
|
Production settings for thrillwiki project.
|
|
"""
|
|
|
|
# Import the module and use its members, e.g., base.BASE_DIR, base***REMOVED***
|
|
from . import base
|
|
|
|
# Import the module and use its members, e.g., database.DATABASES
|
|
|
|
# Import the module and use its members, e.g., email.EMAIL_HOST
|
|
|
|
# Import the module and use its members, e.g., security.SECURE_HSTS_SECONDS
|
|
|
|
# Import the module and use its members, e.g., email.EMAIL_HOST
|
|
|
|
# Import the module and use its members, e.g., security.SECURE_HSTS_SECONDS
|
|
|
|
# Production settings
|
|
DEBUG = False
|
|
|
|
# Allowed hosts must be explicitly set in production
|
|
ALLOWED_HOSTS = base.env.list("ALLOWED_HOSTS")
|
|
|
|
# CSRF trusted origins for production
|
|
CSRF_TRUSTED_ORIGINS = base.env.list("CSRF_TRUSTED_ORIGINS")
|
|
|
|
# Security settings for production
|
|
SECURE_SSL_REDIRECT = True
|
|
SESSION_COOKIE_SECURE = True
|
|
CSRF_COOKIE_SECURE = True
|
|
SECURE_HSTS_SECONDS = 31536000 # 1 year
|
|
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
|
|
SECURE_HSTS_PRELOAD = True
|
|
|
|
# Production logging
|
|
LOGGING = {
|
|
"version": 1,
|
|
"disable_existing_loggers": False,
|
|
"formatters": {
|
|
"verbose": {
|
|
"format": "{levelname} {asctime} {module} {process:d} {thread:d} {message}",
|
|
"style": "{",
|
|
},
|
|
"simple": {
|
|
"format": "{levelname} {message}",
|
|
"style": "{",
|
|
},
|
|
},
|
|
"handlers": {
|
|
"file": {
|
|
"level": "INFO",
|
|
"class": "logging.handlers.RotatingFileHandler",
|
|
"filename": base.BASE_DIR / "logs" / "django.log",
|
|
"maxBytes": 1024 * 1024 * 15, # 15MB
|
|
"backupCount": 10,
|
|
"formatter": "verbose",
|
|
},
|
|
"error_file": {
|
|
"level": "ERROR",
|
|
"class": "logging.handlers.RotatingFileHandler",
|
|
"filename": base.BASE_DIR / "logs" / "django_error.log",
|
|
"maxBytes": 1024 * 1024 * 15, # 15MB
|
|
"backupCount": 10,
|
|
"formatter": "verbose",
|
|
},
|
|
},
|
|
"root": {
|
|
"handlers": ["file"],
|
|
"level": "INFO",
|
|
},
|
|
"loggers": {
|
|
"django": {
|
|
"handlers": ["file", "error_file"],
|
|
"level": "INFO",
|
|
"propagate": False,
|
|
},
|
|
"thrillwiki": {
|
|
"handlers": ["file", "error_file"],
|
|
"level": "INFO",
|
|
"propagate": False,
|
|
},
|
|
},
|
|
}
|
|
|
|
# Static files collection for production
|
|
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"
|
|
|
|
# Cache settings for production (Redis recommended)
|
|
redis_url = base.env.str("REDIS_URL", default=None)
|
|
if redis_url:
|
|
CACHES = {
|
|
"default": {
|
|
"BACKEND": "django_redis.cache.RedisCache",
|
|
"LOCATION": redis_url,
|
|
"OPTIONS": {
|
|
"CLIENT_CLASS": "django_redis.client.DefaultClient",
|
|
},
|
|
}
|
|
}
|
|
|
|
# Use Redis for sessions in production
|
|
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
|
|
SESSION_CACHE_ALIAS = "default"
|