mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 10:51: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:
147
shared/scripts/dev_server.sh
Executable file
147
shared/scripts/dev_server.sh
Executable file
@@ -0,0 +1,147 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ThrillWiki Development Server Script
|
||||
# This script sets up the proper environment variables and runs the Django development server
|
||||
|
||||
set -e # Exit on any error
|
||||
|
||||
echo "🚀 Starting ThrillWiki Development Server..."
|
||||
|
||||
# Change to the project directory (parent of scripts folder)
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
# Set Django environment to local development
|
||||
export DJANGO_SETTINGS_MODULE="config.django.local"
|
||||
|
||||
# Core Django settings
|
||||
export DEBUG="True"
|
||||
export SECRET_KEY="django-insecure-dev-key-not-for-production-$(openssl rand -base64 32 | tr -d "=+/" | cut -c1-25)"
|
||||
|
||||
# Allowed hosts for development
|
||||
export ALLOWED_HOSTS="localhost,127.0.0.1,0.0.0.0"
|
||||
|
||||
# CSRF trusted origins for development
|
||||
export CSRF_TRUSTED_ORIGINS="http://localhost:8000,http://127.0.0.1:8000,https://127.0.0.1:8000"
|
||||
|
||||
# Database configuration (PostgreSQL with PostGIS)
|
||||
export DATABASE_URL="postgis://thrillwiki_user:thrillwiki@localhost:5432/thrillwiki_test_db"
|
||||
|
||||
# Cache configuration (use locmem for development if Redis not available)
|
||||
export CACHE_URL="locmemcache://"
|
||||
export REDIS_URL="redis://127.0.0.1:6379/1"
|
||||
|
||||
# CORS settings for API development
|
||||
export CORS_ALLOW_ALL_ORIGINS="True"
|
||||
export CORS_ALLOWED_ORIGINS=""
|
||||
|
||||
# Email configuration for development (console backend)
|
||||
export EMAIL_URL="consolemail://"
|
||||
|
||||
# GeoDjango library paths for macOS (adjust if needed)
|
||||
export GDAL_LIBRARY_PATH="/opt/homebrew/lib/libgdal.dylib"
|
||||
export GEOS_LIBRARY_PATH="/opt/homebrew/lib/libgeos_c.dylib"
|
||||
|
||||
# API rate limiting (generous for development)
|
||||
export API_RATE_LIMIT_PER_MINUTE="1000"
|
||||
export API_RATE_LIMIT_PER_HOUR="10000"
|
||||
|
||||
# Cache settings
|
||||
export CACHE_MIDDLEWARE_SECONDS="1" # Very short cache for development
|
||||
export CACHE_MIDDLEWARE_KEY_PREFIX="thrillwiki_dev"
|
||||
|
||||
# Social auth settings (you can set these if you have them)
|
||||
# export GOOGLE_OAUTH2_CLIENT_ID=""
|
||||
# export GOOGLE_OAUTH2_CLIENT_SECRET=""
|
||||
# export DISCORD_CLIENT_ID=""
|
||||
# export DISCORD_CLIENT_SECRET=""
|
||||
|
||||
# Create necessary directories
|
||||
echo "📁 Creating necessary directories..."
|
||||
mkdir -p logs
|
||||
mkdir -p profiles
|
||||
mkdir -p media
|
||||
mkdir -p staticfiles
|
||||
mkdir -p static/css
|
||||
|
||||
# Check if virtual environment is activated
|
||||
if [[ -z "$VIRTUAL_ENV" ]] && [[ -d ".venv" ]]; then
|
||||
echo "🔧 Activating virtual environment..."
|
||||
source .venv/bin/activate
|
||||
fi
|
||||
|
||||
# Run database migrations if needed
|
||||
echo "🗄️ Checking database migrations..."
|
||||
if uv run manage.py migrate --check 2>/dev/null; then
|
||||
echo "✅ Database migrations are up to date"
|
||||
else
|
||||
echo "🔄 Running database migrations..."
|
||||
uv run manage.py migrate --noinput
|
||||
fi
|
||||
echo "Resetting database..."
|
||||
if uv run manage.py seed_sample_data 2>/dev/null; then
|
||||
echo "Seeding complete!"
|
||||
else
|
||||
echo "Seeding test data to database..."
|
||||
uv run manage.py seed_sample_data
|
||||
fi
|
||||
|
||||
# Create superuser if it doesn't exist
|
||||
echo "👤 Checking for superuser..."
|
||||
if ! uv run manage.py shell -c "from django.contrib.auth import get_user_model; User = get_user_model(); exit(0 if User.objects.filter(is_superuser=True).exists() else 1)" 2>/dev/null; then
|
||||
echo "👤 Creating development superuser (admin/admin)..."
|
||||
uv run manage.py shell -c "
|
||||
from django.contrib.auth import get_user_model
|
||||
User = get_user_model()
|
||||
if not User.objects.filter(username='admin').exists():
|
||||
User.objects.create_superuser('admin', 'admin@example.com', 'admin')
|
||||
print('Created superuser: admin/admin')
|
||||
else:
|
||||
print('Superuser already exists')
|
||||
"
|
||||
fi
|
||||
|
||||
# Collect static files for development
|
||||
echo "📦 Collecting static files..."
|
||||
uv run manage.py collectstatic --noinput --clear
|
||||
|
||||
# Build Tailwind CSS
|
||||
if command -v npm &> /dev/null; then
|
||||
echo "🎨 Building Tailwind CSS..."
|
||||
uv run manage.py tailwind build
|
||||
else
|
||||
echo "⚠️ npm not found, skipping Tailwind CSS build"
|
||||
fi
|
||||
|
||||
# Run system checks
|
||||
echo "🔍 Running system checks..."
|
||||
if uv run manage.py check; then
|
||||
echo "✅ System checks passed"
|
||||
else
|
||||
echo "❌ System checks failed, but continuing..."
|
||||
fi
|
||||
|
||||
# Display environment info
|
||||
echo ""
|
||||
echo "🌍 Development Environment:"
|
||||
echo " - Settings Module: $DJANGO_SETTINGS_MODULE"
|
||||
echo " - Debug Mode: $DEBUG"
|
||||
echo " - Database: PostgreSQL with PostGIS"
|
||||
echo " - Cache: Local memory cache"
|
||||
echo " - Admin URL: http://localhost:8000/admin/"
|
||||
echo " - Admin User: admin / admin"
|
||||
echo " - Silk Profiler: http://localhost:8000/silk/"
|
||||
echo " - Debug Toolbar: Available on debug pages"
|
||||
echo " - API Documentation: http://localhost:8000/api/docs/"
|
||||
echo ""
|
||||
|
||||
# Start the development server
|
||||
echo "🌟 Starting Django development server on http://localhost:8000"
|
||||
echo "Press Ctrl+C to stop the server"
|
||||
echo ""
|
||||
|
||||
# Use runserver_plus if django-extensions is available, otherwise use standard runserver
|
||||
if uv run python -c "import django_extensions" 2>/dev/null; then
|
||||
exec uv run manage.py runserver_plus 0.0.0.0:8000
|
||||
else
|
||||
exec uv run manage.py runserver 0.0.0.0:8000
|
||||
fi
|
||||
Reference in New Issue
Block a user