# ThrillWiki Migration Mapping Document This document provides a comprehensive mapping of files from the current Django project to the new monorepo structure. ## Root Level Files | Current Location | New Location | Notes | |------------------|--------------|-------| | `manage.py` | `backend/manage.py` | Core Django management | | `pyproject.toml` | `backend/pyproject.toml` | Python dependencies | | `uv.lock` | `backend/uv.lock` | UV lock file | | `.gitignore` | `.gitignore` (update) | Merge with monorepo patterns | | `README.md` | `README.md` (update) | Update for monorepo | | `.pre-commit-config.yaml` | `.pre-commit-config.yaml` | Root level | ## Configuration Directory | Current Location | New Location | Notes | |------------------|--------------|-------| | `config/django/` | `backend/config/django/` | Django settings | | `config/settings/` | `backend/config/settings/` | Environment settings | | `config/urls.py` | `backend/config/urls.py` | URL configuration | | `config/wsgi.py` | `backend/config/wsgi.py` | WSGI configuration | | `config/asgi.py` | `backend/config/asgi.py` | ASGI configuration | ## Django Apps ### Accounts App | Current Location | New Location | |------------------|--------------| | `accounts/` | `backend/apps/accounts/` | | `accounts/__init__.py` | `backend/apps/accounts/__init__.py` | | `accounts/models.py` | `backend/apps/accounts/models.py` | | `accounts/views.py` | `backend/apps/accounts/views.py` | | `accounts/admin.py` | `backend/apps/accounts/admin.py` | | `accounts/apps.py` | `backend/apps/accounts/apps.py` | | `accounts/migrations/` | `backend/apps/accounts/migrations/` | | `accounts/tests/` | `backend/apps/accounts/tests/` | ### Parks App | Current Location | New Location | |------------------|--------------| | `parks/` | `backend/apps/parks/` | | `parks/__init__.py` | `backend/apps/parks/__init__.py` | | `parks/models.py` | `backend/apps/parks/models.py` | | `parks/views.py` | `backend/apps/parks/views.py` | | `parks/admin.py` | `backend/apps/parks/admin.py` | | `parks/apps.py` | `backend/apps/parks/apps.py` | | `parks/migrations/` | `backend/apps/parks/migrations/` | | `parks/tests/` | `backend/apps/parks/tests/` | ### Rides App | Current Location | New Location | |------------------|--------------| | `rides/` | `backend/apps/rides/` | | `rides/__init__.py` | `backend/apps/rides/__init__.py` | | `rides/models.py` | `backend/apps/rides/models.py` | | `rides/views.py` | `backend/apps/rides/views.py` | | `rides/admin.py` | `backend/apps/rides/admin.py` | | `rides/apps.py` | `backend/apps/rides/apps.py` | | `rides/migrations/` | `backend/apps/rides/migrations/` | | `rides/tests/` | `backend/apps/rides/tests/` | ### Moderation App | Current Location | New Location | |------------------|--------------| | `moderation/` | `backend/apps/moderation/` | | `moderation/__init__.py` | `backend/apps/moderation/__init__.py` | | `moderation/models.py` | `backend/apps/moderation/models.py` | | `moderation/views.py` | `backend/apps/moderation/views.py` | | `moderation/admin.py` | `backend/apps/moderation/admin.py` | | `moderation/apps.py` | `backend/apps/moderation/apps.py` | | `moderation/migrations/` | `backend/apps/moderation/migrations/` | | `moderation/tests/` | `backend/apps/moderation/tests/` | ### Location App | Current Location | New Location | |------------------|--------------| | `location/` | `backend/apps/location/` | | `location/__init__.py` | `backend/apps/location/__init__.py` | | `location/models.py` | `backend/apps/location/models.py` | | `location/views.py` | `backend/apps/location/views.py` | | `location/admin.py` | `backend/apps/location/admin.py` | | `location/apps.py` | `backend/apps/location/apps.py` | | `location/migrations/` | `backend/apps/location/migrations/` | | `location/tests/` | `backend/apps/location/tests/` | ### Media App | Current Location | New Location | |------------------|--------------| | `media/` | `backend/apps/media/` | | `media/__init__.py` | `backend/apps/media/__init__.py` | | `media/models.py` | `backend/apps/media/models.py` | | `media/views.py` | `backend/apps/media/views.py` | | `media/admin.py` | `backend/apps/media/admin.py` | | `media/apps.py` | `backend/apps/media/apps.py` | | `media/migrations/` | `backend/apps/media/migrations/` | | `media/tests/` | `backend/apps/media/tests/` | ### Email Service App | Current Location | New Location | |------------------|--------------| | `email_service/` | `backend/apps/email_service/` | | `email_service/__init__.py` | `backend/apps/email_service/__init__.py` | | `email_service/models.py` | `backend/apps/email_service/models.py` | | `email_service/views.py` | `backend/apps/email_service/views.py` | | `email_service/admin.py` | `backend/apps/email_service/admin.py` | | `email_service/apps.py` | `backend/apps/email_service/apps.py` | | `email_service/migrations/` | `backend/apps/email_service/migrations/` | | `email_service/tests/` | `backend/apps/email_service/tests/` | ### Core App | Current Location | New Location | |------------------|--------------| | `core/` | `backend/apps/core/` | | `core/__init__.py` | `backend/apps/core/__init__.py` | | `core/models.py` | `backend/apps/core/models.py` | | `core/views.py` | `backend/apps/core/views.py` | | `core/admin.py` | `backend/apps/core/admin.py` | | `core/apps.py` | `backend/apps/core/apps.py` | | `core/migrations/` | `backend/apps/core/migrations/` | | `core/tests/` | `backend/apps/core/tests/` | ## Static Files and Templates | Current Location | New Location | Notes | |------------------|--------------|-------| | `static/` | `backend/static/` | Django admin and backend assets | | `staticfiles/` | `backend/staticfiles/` | Collected static files | | `templates/` | `backend/templates/` | Django templates (if any) | ## Media Files | Current Location | New Location | Notes | |------------------|--------------|-------| | `media/` | `shared/media/` | User uploaded content | ## Scripts and Development Tools | Current Location | New Location | Notes | |------------------|--------------|-------| | `scripts/` | `scripts/` | Root level scripts | | `scripts/dev_server.sh` | `scripts/backend_dev.sh` | Rename for clarity | ## New Frontend Structure (Created) | New Location | Purpose | |--------------|---------| | `frontend/` | Vue.js application root | | `frontend/package.json` | Node.js dependencies | | `frontend/pnpm-lock.yaml` | pnpm lock file | | `frontend/vite.config.ts` | Vite configuration | | `frontend/tsconfig.json` | TypeScript configuration | | `frontend/tailwind.config.js` | Tailwind CSS configuration | | `frontend/src/` | Vue.js source code | | `frontend/src/main.ts` | Application entry point | | `frontend/src/App.vue` | Root component | | `frontend/src/components/` | Vue components | | `frontend/src/views/` | Page components | | `frontend/src/router/` | Vue Router configuration | | `frontend/src/stores/` | Pinia stores | | `frontend/src/composables/` | Vue composables | | `frontend/src/utils/` | Utility functions | | `frontend/src/types/` | TypeScript type definitions | | `frontend/src/assets/` | Static assets | | `frontend/public/` | Public assets | | `frontend/dist/` | Build output | ## New Shared Resources (Created) | New Location | Purpose | |--------------|---------| | `shared/` | Cross-platform resources | | `shared/media/` | User uploaded files | | `shared/docs/` | Documentation | | `shared/types/` | Shared TypeScript types | | `shared/constants/` | Shared constants | ## Updated Root Files ### package.json (Root) ```json { "name": "thrillwiki-monorepo", "private": true, "workspaces": [ "frontend" ], "scripts": { "dev": "concurrently \"pnpm --filter frontend dev\" \"./scripts/backend_dev.sh\"", "build": "pnpm --filter frontend build", "backend:dev": "./scripts/backend_dev.sh", "frontend:dev": "pnpm --filter frontend dev", "test": "pnpm --filter frontend test && cd backend && uv run manage.py test", "lint": "pnpm --filter frontend lint && cd backend && uv run flake8 .", "format": "pnpm --filter frontend format && cd backend && uv run black ." }, "devDependencies": { "concurrently": "^8.2.2" } } ``` ### .gitignore (Updated) ```gitignore # Python __pycache__/ *.py[cod] *$py.class *.so .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ share/python-wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # Django *.log local_settings.py db.sqlite3 db.sqlite3-journal /backend/static/ /backend/media/ # UV .uv/ # Node.js node_modules/ npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* lerna-debug.log* .pnpm-store/ # Vue.js / Vite /frontend/dist/ /frontend/dist-ssr/ *.local # Environment variables .env .env.local .env.development.local .env.test.local .env.production.local # IDEs .vscode/ .idea/ *.swp *.swo # OS .DS_Store Thumbs.db # Logs logs/ *.log # Coverage coverage/ *.lcov .nyc_output ``` ## Configuration Updates Required ### Backend Django Settings Update `INSTALLED_APPS` paths: ```python INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # Local apps 'apps.accounts', 'apps.parks', 'apps.rides', 'apps.moderation', 'apps.location', 'apps.media', 'apps.email_service', 'apps.core', ] ``` Update media and static files paths: ```python STATIC_URL = '/static/' STATIC_ROOT = BASE_DIR / 'staticfiles' STATICFILES_DIRS = [ BASE_DIR / 'static', ] MEDIA_URL = '/media/' MEDIA_ROOT = BASE_DIR.parent / 'shared' / 'media' ``` ### Script Updates Update `scripts/backend_dev.sh`: ```bash #!/bin/bash cd backend lsof -ti :8000 | xargs kill -9 2>/dev/null || true find . -type d -name "__pycache__" -exec rm -r {} + 2>/dev/null || true uv run manage.py runserver 0.0.0.0:8000 ``` ## Migration Steps Summary 1. **Create new directory structure** 2. **Move backend files** to `backend/` directory 3. **Update import paths** in Django settings and apps 4. **Create frontend** Vue.js application 5. **Update scripts** and configuration files 6. **Test both backend and frontend** independently 7. **Configure API integration** between Django and Vue.js 8. **Update deployment** configurations ## Validation Checklist - [ ] All Django apps moved to `backend/apps/` - [ ] Configuration files updated with new paths - [ ] Static and media file paths configured correctly - [ ] Frontend Vue.js application created and configured - [ ] Root package.json with workspace configuration - [ ] Development scripts updated and tested - [ ] Git configuration updated - [ ] Documentation updated - [ ] CI/CD pipelines updated (if applicable) - [ ] Database migrations work correctly - [ ] Both development servers start successfully - [ ] API endpoints accessible from frontend