mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2025-12-20 10: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
353 lines
11 KiB
Markdown
353 lines
11 KiB
Markdown
# 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 |