mirror of
https://github.com/pacnpal/thrillwiki_django_no_react.git
synced 2026-02-05 16:55:17 -05:00
84 lines
2.9 KiB
Markdown
84 lines
2.9 KiB
Markdown
# Source Mapping: React → Nuxt
|
|
|
|
Quick reference for mapping thrillwiki-87 paths to thrillwiki_django_no_react paths.
|
|
|
|
## Directory Mappings
|
|
|
|
| React (thrillwiki-87) | Nuxt (thrillwiki_django_no_react) |
|
|
|----------------------|-----------------------------------|
|
|
| `src/components/` | `frontend/app/components/` |
|
|
| `src/pages/` | `frontend/app/pages/` |
|
|
| `src/hooks/` | `frontend/app/composables/` |
|
|
| `src/types/` | `frontend/app/types/` |
|
|
| `src/lib/` | `frontend/app/utils/` |
|
|
| `src/contexts/` | `frontend/app/stores/` (Pinia) |
|
|
| `docs/` | `source_docs/` |
|
|
| `supabase/migrations/` | `backend/apps/*/models.py` |
|
|
|
|
## Component Mappings (shadcn-ui → Nuxt UI)
|
|
|
|
| shadcn-ui | Nuxt UI |
|
|
|-----------|---------|
|
|
| `<Button>` | `<UButton>` |
|
|
| `<Card>` | `<UCard>` |
|
|
| `<Dialog>` | `<UModal>` |
|
|
| `<Input>` | `<UInput>` |
|
|
| `<Select>` | `<USelect>` / `<USelectMenu>` |
|
|
| `<Tabs>` | `<UTabs>` |
|
|
| `<Table>` | `<UTable>` |
|
|
| `<Badge>` | `<UBadge>` |
|
|
| `<Avatar>` | `<UAvatar>` |
|
|
| `<Tooltip>` | `<UTooltip>` |
|
|
| `<Sheet>` | `<USlideover>` |
|
|
| `<AlertDialog>` | `<UModal>` + confirm pattern |
|
|
| `<Skeleton>` | `<USkeleton>` |
|
|
| `<Textarea>` | `<UTextarea>` |
|
|
| `<Checkbox>` | `<UCheckbox>` |
|
|
| `<RadioGroup>` | `<URadioGroup>` |
|
|
| `<Switch>` | `<UToggle>` |
|
|
| `<DropdownMenu>` | `<UDropdown>` |
|
|
| `<Command>` | `<UCommandPalette>` |
|
|
| `<Popover>` | `<UPopover>` |
|
|
|
|
## Page Mappings
|
|
|
|
| React Page | Nuxt Page |
|
|
|------------|-----------|
|
|
| `Index.tsx` | `pages/index.vue` |
|
|
| `Parks.tsx` | `pages/parks/index.vue` |
|
|
| `ParkDetail.tsx` | `pages/parks/[park_slug]/index.vue` |
|
|
| `Rides.tsx` | `pages/rides/index.vue` |
|
|
| `RideDetail.tsx` | `pages/parks/[park_slug]/rides/[ride_slug].vue` |
|
|
| `Manufacturers.tsx` | `pages/manufacturers/index.vue` |
|
|
| `ManufacturerDetail.tsx` | `pages/manufacturers/[slug].vue` |
|
|
| `Designers.tsx` | `pages/designers/index.vue` |
|
|
| `DesignerDetail.tsx` | `pages/designers/[slug].vue` |
|
|
| `Operators.tsx` | `pages/operators/index.vue` |
|
|
| `OperatorDetail.tsx` | `pages/operators/[slug].vue` |
|
|
| `ParkOwners.tsx` | `pages/owners/index.vue` |
|
|
| `PropertyOwnerDetail.tsx` | `pages/owners/[slug].vue` |
|
|
| `Auth.tsx` | `pages/auth/login.vue`, `pages/auth/signup.vue` |
|
|
| `Profile.tsx` | `pages/profile/index.vue` |
|
|
| `Search.tsx` | `pages/search.vue` |
|
|
| `AdminDashboard.tsx` | `pages/admin/index.vue` |
|
|
|
|
## Hook → Composable Mappings
|
|
|
|
| React Hook | Vue Composable |
|
|
|------------|----------------|
|
|
| `useAuth.tsx` | `useAuth.ts` |
|
|
| `useSearch.tsx` | `useSearchHistory.ts` |
|
|
| `useModerationQueue.ts` | `useModeration.ts` |
|
|
| `useProfile.tsx` | (inline in pages) |
|
|
| `useLocations.ts` | `useParksApi.ts` |
|
|
| `useUnitPreferences.ts` | `useUnits.ts` |
|
|
|
|
## API Endpoint Translation
|
|
|
|
| Supabase RPC/Query | Django API |
|
|
|--------------------|------------|
|
|
| `supabase.from('parks')` | `GET /api/v1/parks/` |
|
|
| `supabase.rpc('search_*')` | `GET /api/v1/search/` |
|
|
| `supabase.auth.*` | `/api/v1/auth/*` |
|
|
| Edge Functions | Django views in `backend/apps/*/views.py` |
|