Shows → Experience Terminology Refactor Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Rename all "shows" terminology to "experience" throughout the codebase (schema, components, utilities, i18n, URLs) to eliminate guest-facing confusion about what "show" means.
Architecture: Direct rename approach - no backward compatibility. Schema tables renamed first (requires Convex migration), then all dependent code updated systematically. i18n keys renamed fully. URL redirects added for old routes.
Tech Stack: Next.js 16, Convex, Tailwind CSS v4, paraglide-js i18n
Phase 1: Backend Schema Rename
Task 1: Rename shows table to experiences in schema
Files:
-
Modify:
packages/backend/convex/schema.ts:6-30 -
Step 1: Rename table definition
Change line 6 from shows: defineTable({ to experiences: defineTable({
- Step 2: Update index references
Lines 28-30 should reference experiences not shows:
.index("by_status", ["status"])
.index("by_slug", ["slug"])
.index("by_code", ["code"])- Step 3: Commit
git add packages/backend/convex/schema.ts
git commit -m "refactor(schema): rename shows table to experiences"Task 2: Rename showEvents table to experienceEvents
Files:
-
Modify:
packages/backend/convex/schema.ts:33-56 -
Step 1: Rename table
Change line 33 from showEvents: defineTable({ to experienceEvents: defineTable({
- Step 2: Rename showId field to experienceId
Line 34: Change showId: v.id("shows"), to experienceId: v.id("experiences"),
- Step 3: Update indexes
Lines 52-56:
.index("by_experience", ["experienceId"])
.index("by_date", ["date"])
.index("by_experience_date", ["experienceId", "date"])- Step 4: Commit
git add packages/backend/convex/schema.ts
git commit -m "refactor(schema): rename showEvents to experienceEvents"Task 3: Update all other table references to showEvents → experienceEvents
Files:
-
Modify:
packages/backend/convex/schema.ts(multiple locations) -
Step 1: Find all references to showEvents
grep -n "showEvents" packages/backend/convex/schema.ts- Step 2: Update each reference
References to update:
-
reservations.eventIdcomment (line ~60):showEvent→experienceEvent -
checkIns.eventIdcomment (line ~145) -
orders.eventIdcomment (line ~229) -
liveViewers.eventIdcomment (line ~497) -
Step 3: Commit
git add packages/backend/convex/schema.ts
git commit -m "refactor(schema): update all table references to experienceEvents"Task 4: Update showId references to experienceId in dependent tables
Files:
-
Modify:
packages/backend/convex/schema.ts -
Step 1: Find all showId references
grep -n "showId" packages/backend/convex/schema.ts- Step 2: Update references in other tables
In guestProfiles, showDate → experienceDate (line ~289)
In guestReactions, showDate → experienceDate (line ~307)
In photoSubmissions, showDate → experienceDate (line ~421)
In spinResults, showDate → experienceDate (line ~464)
In challengeSubmissions, showDate → experienceDate (line ~488)
In liveViewers, showDate → experienceDate (line ~499)
- Step 3: Update formSessions formType
Line ~377: SHOW → EXPERIENCE
- Step 4: Update notifications type
Line ~510: SHOW_REMINDER → EXPERIENCE_REMINDER
- Step 5: Commit
git add packages/backend/convex/schema.ts
git commit -m "refactor(schema): rename showId/showDate to experienceId/experienceDate"Task 5: Run Convex codegen to regenerate types
Files:
-
Modify:
packages/backend/convex/_generated/(auto-generated) -
Step 1: Run codegen
cd packages/backend/convex && npx convex codegen- Step 2: Verify generated files updated
git status packages/backend/convex/_generated/- Step 3: Commit
git add packages/backend/convex/_generated/
git commit -m "refactor(schema): regenerate Convex types after rename"Phase 2: Backend Domain Functions
Task 6: Rename shows.ts domain file to experiences.ts
Files:
-
Rename:
packages/backend/convex/domains/shows.ts→packages/backend/convex/domains/experiences.ts -
Step 1: Rename file
mv packages/backend/convex/domains/shows.ts packages/backend/convex/domains/experiences.ts- Step 2: Update file contents - rename ShowTime enum
In the file, change ShowTime to ExperienceTime:
export enum ExperienceTime {
Lunch = "L",
Night = "N",
}-
Step 3: Update function names
-
createShow→createExperience -
updateShow→updateExperience -
archiveShow→archiveExperience -
generateEventCode→generateExperienceEventCode -
parseEventCode→parseExperienceEventCode -
Step 4: Update internal references to ShowTime
All references to ShowTime.Lunch → ExperienceTime.Lunch
All references to ShowTime.Night → ExperienceTime.Night
- Step 5: Commit
git add packages/backend/convex/domains/experiences.ts
git rm packages/backend/convex/domains/shows.ts
git commit -m "refactor(backend): rename shows.ts to experiences.ts"Task 7: Update experiences.ts internal references
Files:
-
Modify:
packages/backend/convex/domains/experiences.ts -
Step 1: Update STATIC_SHOWS import
Change getShowBySlug → getExperienceBySlug
Change STATIC_SHOWS → STATIC_EXPERIENCES
- Step 2: Update all show → experience in variable names
In handlers, show. → experience. for data mappings
- Step 3: Commit
git add packages/backend/convex/domains/experiences.ts
git commit -m "refactor(backend): update experiences.ts internal references"Task 8: Update events.ts domain file
Files:
-
Modify:
packages/backend/convex/domains/events.ts -
Step 1: Find all references to shows/showEvents
grep -n "shows\|showEvents\|showId" packages/backend/convex/domains/events.ts- Step 2: Update to experiences/experienceEvents/experienceId
All showId → experienceId
All "shows" → "experiences"
All "showEvents" → "experienceEvents"
- Step 3: Commit
git add packages/backend/convex/domains/events.ts
git commit -m "refactor(backend): update events.ts for experienceEvents"Task 9: Update experiences.http.ts
Files:
-
Modify:
packages/backend/convex/domains/experiences.http.ts -
Step 1: Update all show references
grep -n "show" packages/backend/convex/domains/experiences.http.ts- Step 2: Update to experience
All show → experience in variable/function names
- Step 3: Commit
git add packages/backend/convex/domains/experiences.http.ts
git commit -m "refactor(backend): update experiences.http.ts"Task 10: Rename showsData.ts to experiences-data.ts
Files:
-
Rename:
packages/backend/convex/lib/showsData.ts→packages/backend/convex/lib/experiences-data.ts -
Step 1: Rename file
mv packages/backend/convex/lib/showsData.ts packages/backend/convex/lib/experiences-data.ts-
Step 2: Update internal content
-
STATIC_SHOWS→STATIC_EXPERIENCES -
getShowBySlug→getExperienceBySlug -
Showtype →Experiencetype -
Step 3: Update all imports in domain files
grep -rn "showsData" packages/backend/convex/Update imports in:
-
domains/experiences.ts -
domains/events.ts -
Any other file referencing
showsData -
Step 4: Commit
git add packages/backend/convex/lib/experiences-data.ts
git rm packages/backend/convex/lib/showsData.ts
git commit -m "refactor(backend): rename showsData.ts to experiences-data.ts"Task 11: Update scheduled.ts
Files:
-
Modify:
packages/backend/convex/functions/scheduled.ts -
Step 1: Find show references
grep -n "show" packages/backend/convex/functions/scheduled.ts- Step 2: Update all references
All show → experience where referring to the concept
- Step 3: Commit
git add packages/backend/convex/functions/scheduled.ts
git commit -m "refactor(backend): update scheduled.ts for experiences"Phase 3: Frontend Component Renames
Task 12: Rename show-card.tsx to experience-card.tsx
Files:
-
Rename:
apps/frontend/components/ui/show-card.tsx→apps/frontend/components/ui/experience-card.tsx -
Step 1: Rename file
mv apps/frontend/components/ui/show-card.tsx apps/frontend/components/ui/experience-card.tsx- Step 2: Update internal component name
Change ShowCard → ExperienceCard
Change ShowCardEvent → ExperienceCardEvent
Change ShowCardShow → ExperienceCardShow
Change ShowCardData → ExperienceCardData
Change ShowCardProps → ExperienceCardProps
- Step 3: Update all prop types
All show: props → experience:
- Step 4: Update URLs in component
/shows?slug= → /experiences?slug=
- Step 5: Find and update all imports
grep -rn "from.*show-card" apps/frontend --include="*.tsx"Update each import to experience-card
- Step 6: Commit
git add apps/frontend/components/ui/experience-card.tsx
git rm apps/frontend/components/ui/show-card.tsx
git commit -m "refactor(frontend): rename ShowCard to ExperienceCard"Task 13: Rename show-picker.tsx to experience-picker.tsx
Files:
-
Rename:
apps/frontend/components/booking/show-picker.tsx→apps/frontend/components/booking/experience-picker.tsx -
Step 1: Rename file
mv apps/frontend/components/booking/show-picker.tsx apps/frontend/components/booking/experience-picker.tsx- Step 2: Update component name
ShowPicker → ExperiencePicker
- Step 3: Update all show references in text
"Book a Show" → "Book an Experience" "Shows on day" → "Experiences on day" "Upcoming Shows" → "Upcoming Experiences" "No shows available" → "No experiences available"
- Step 4: Update imports
ShowCard → ExperienceCard
formatUpcomingShows → formatUpcomingExperiences
- Step 5: Update all consumers
grep -rn "show-picker" apps/frontend --include="*.tsx"Update imports
- Step 6: Commit
git add apps/frontend/components/booking/experience-picker.tsx
git rm apps/frontend/components/booking/show-picker.tsx
git commit -m "refactor(frontend): rename ShowPicker to ExperiencePicker"Task 14: Rename show-reminder.tsx to experience-reminder.tsx
Files:
-
Rename:
apps/frontend/components/booking/show-reminder.tsx→apps/frontend/components/booking/experience-reminder.tsx -
Step 1: Rename file
mv apps/frontend/components/booking/show-reminder.tsx apps/frontend/components/booking/experience-reminder.tsx- Step 2: Update component name
ShowReminder → ExperienceReminder
- Step 3: Update consumers
grep -rn "show-reminder" apps/frontend --include="*.tsx"- Step 4: Commit
git add apps/frontend/components/booking/experience-reminder.tsx
git rm apps/frontend/components/booking/show-reminder.tsx
git commit -m "refactor(frontend): rename ShowReminder to ExperienceReminder"Task 15: Rename show-reminder-skeleton.tsx
Files:
-
Rename:
apps/frontend/components/booking/show-reminder-skeleton.tsx→apps/frontend/components/booking/experience-reminder-skeleton.tsx -
Step 1: Rename and update
mv apps/frontend/components/booking/show-reminder-skeleton.tsx apps/frontend/components/booking/experience-reminder-skeleton.tsx- Step 2: Update consumers
grep -rn "show-reminder-skeleton" apps/frontend --include="*.tsx"- Step 3: Commit
git add apps/frontend/components/booking/experience-reminder-skeleton.tsx
git rm apps/frontend/components/booking/show-reminder-skeleton.tsx
git commit -m "refactor(frontend): rename experience-reminder-skeleton"Task 16: Rename show-event-list.tsx
Files:
-
Rename:
apps/frontend/components/ui/show-event-list.tsx→apps/frontend/components/ui/experience-event-list.tsx -
Step 1: Rename file
mv apps/frontend/components/ui/show-event-list.tsx apps/frontend/components/ui/experience-event-list.tsx- Step 2: Update component name
ShowEventList → ExperienceEventList
- Step 3: Update all consumers
grep -rn "show-event-list" apps/frontend --include="*.tsx"- Step 4: Commit
git add apps/frontend/components/ui/experience-event-list.tsx
git rm apps/frontend/components/ui/show-event-list.tsx
git commit -m "refactor(frontend): rename ShowEventList to ExperienceEventList"Task 17: Rename admin show-form.tsx
Files:
-
Rename:
apps/frontend/components/admin/show-form.tsx→apps/frontend/components/admin/experience-form.tsx -
Step 1: Rename file
mv apps/frontend/components/admin/show-form.tsx apps/frontend/components/admin/experience-form.tsx- Step 2: Update internal names
ShowForm → ExperienceForm
- Step 3: Update UI text
"Add Show" → "Add Experience" "Edit Show" → "Edit Experience" "Show Title" → "Experience Title"
- Step 4: Update consumers
grep -rn "show-form" apps/frontend --include="*.tsx"- Step 5: Commit
git add apps/frontend/components/admin/experience-form.tsx
git rm apps/frontend/components/admin/show-form.tsx
git commit -m "refactor(frontend): rename ShowForm to ExperienceForm"Task 18: Rename admin show-table-row.tsx
Files:
-
Rename:
apps/frontend/components/admin/show-table-row.tsx→apps/frontend/components/admin/experience-table-row.tsx -
Step 1: Rename file
mv apps/frontend/components/admin/show-table-row.tsx apps/frontend/components/admin/experience-table-row.tsx- Step 2: Update component name
ShowTableRow → ExperienceTableRow
- Step 3: Update consumers
grep -rn "show-table-row" apps/frontend --include="*.tsx"- Step 4: Commit
git add apps/frontend/components/admin/experience-table-row.tsx
git rm apps/frontend/components/admin/show-table-row.tsx
git commit -m "refactor(frontend): rename ShowTableRow to ExperienceTableRow"Task 19: Rename top-shows-list.tsx
Files:
-
Rename:
apps/frontend/components/admin/top-shows-list.tsx→apps/frontend/components/admin/top-experiences-list.tsx -
Step 1: Rename file
mv apps/frontend/components/admin/top-shows-list.tsx apps/frontend/components/admin/top-experiences-list.tsx- Step 2: Update component name
TopShowsList → TopExperiencesList
- Step 3: Update text
"Top Shows" → "Top Experiences"
- Step 4: Update consumers
grep -rn "top-shows-list" apps/frontend --include="*.tsx"- Step 5: Commit
git add apps/frontend/components/admin/top-experiences-list.tsx
git rm apps/frontend/components/admin/top-shows-list.tsx
git commit -m "refactor(frontend): rename TopShowsList to TopExperiencesList"Task 20: Rename show-schedule-preview.tsx
Files:
-
Rename:
apps/frontend/components/home/show-schedule-preview.tsx→apps/frontend/components/home/experience-schedule-preview.tsx -
Step 1: Rename file
mv apps/frontend/components/home/show-schedule-preview.tsx apps/frontend/components/home/experience-schedule-preview.tsx- Step 2: Update component name
ShowSchedulePreview → ExperienceSchedulePreview
-
Step 3: Update all show references
-
Step 4: Update consumers
grep -rn "show-schedule-preview" apps/frontend --include="*.tsx"- Step 5: Commit
git add apps/frontend/components/home/experience-schedule-preview.tsx
git rm apps/frontend/components/home/show-schedule-preview.tsx
git commit -m "refactor(frontend): rename ShowSchedulePreview to ExperienceSchedulePreview"Task 21: Rename upcoming-shows-section.tsx
Files:
-
Rename:
apps/frontend/components/home/upcoming-shows-section.tsx→apps/frontend/components/home/upcoming-experiences-section.tsx -
Step 1: Rename file
mv apps/frontend/components/home/upcoming-shows-section.tsx apps/frontend/components/home/upcoming-experiences-section.tsx- Step 2: Update component name
UpcomingShowsSection → UpcomingExperiencesSection
- Step 3: Update text
"Upcoming Shows" → "Upcoming Experiences"
- Step 4: Update consumers
grep -rn "upcoming-shows-section" apps/frontend --include="*.tsx"- Step 5: Commit
git add apps/frontend/components/home/upcoming-experiences-section.tsx
git rm apps/frontend/components/home/upcoming-shows-section.tsx
git commit -m "refactor(frontend): rename UpcomingShowsSection to UpcomingExperiencesSection"Phase 4: Utility File Renames
Task 22: Rename lib/utils/shows.ts
Files:
-
Rename:
apps/frontend/lib/utils/shows.ts→apps/frontend/lib/utils/experiences.ts -
Step 1: Rename file
mv apps/frontend/lib/utils/shows.ts apps/frontend/lib/utils/experiences.ts- Step 2: Update function names
formatUpcomingShows → formatUpcomingExperiences
All exported functions with show → experience
- Step 3: Update all consumers
grep -rn "lib/utils/shows" apps/frontend --include="*.tsx"- Step 4: Commit
git add apps/frontend/lib/utils/experiences.ts
git rm apps/frontend/lib/utils/shows.ts
git commit -m "refactor(frontend): rename shows.ts utils to experiences.ts"Task 23: Rename lib/utils/show-event-list.ts
Files:
-
Rename:
apps/frontend/lib/utils/show-event-list.ts→apps/frontend/lib/utils/experience-event-list.ts -
Step 1: Rename file
mv apps/frontend/lib/utils/show-event-list.ts apps/frontend/lib/utils/experience-event-list.ts-
Step 2: Update function names
-
Step 3: Update consumers
grep -rn "show-event-list" apps/frontend --include="*.tsx"- Step 4: Commit
git add apps/frontend/lib/utils/experience-event-list.ts
git rm apps/frontend/lib/utils/show-event-list.ts
git commit -m "refactor(frontend): rename show-event-list.ts to experience-event-list.ts"Task 24: Rename lib/hooks/use-calendar-shows.ts
Files:
-
Rename:
apps/frontend/lib/hooks/use-calendar-shows.ts→apps/frontend/lib/hooks/use-calendar-experiences.ts -
Step 1: Rename file
mv apps/frontend/lib/hooks/use-calendar-shows.ts apps/frontend/lib/hooks/use-calendar-experiences.ts- Step 2: Update hook name
useCalendarShows → useCalendarExperiences
- Step 3: Update consumers
grep -rn "use-calendar-shows" apps/frontend --include="*.tsx"- Step 4: Commit
git add apps/frontend/lib/hooks/use-calendar-experiences.ts
git rm apps/frontend/lib/hooks/use-calendar-shows.ts
git commit -m "refactor(frontend): rename use-calendar-shows to use-calendar-experiences"Task 25: Rename lib/data/shows.ts
Files:
-
Rename:
apps/frontend/lib/data/shows.ts→apps/frontend/lib/data/experiences.ts -
Step 1: Rename file
mv apps/frontend/lib/data/shows.ts apps/frontend/lib/data/experiences.ts- Step 2: Update all consumers
grep -rn "lib/data/shows" apps/frontend --include="*.tsx"- Step 3: Commit
git add apps/frontend/lib/data/experiences.ts
git rm apps/frontend/lib/data/shows.ts
git commit -m "refactor(frontend): rename lib/data/shows.ts to experiences.ts"Task 26: Rename lib/data/calendar-shows.ts
Files:
-
Rename:
apps/frontend/lib/data/calendar-shows.ts→apps/frontend/lib/data/calendar-experiences.ts -
Step 1: Rename file
mv apps/frontend/lib/data/calendar-shows.ts apps/frontend/lib/data/calendar-experiences.ts- Step 2: Update all consumers
grep -rn "lib/data/calendar-shows" apps/frontend --include="*.tsx"- Step 3: Commit
git add apps/frontend/lib/data/calendar-experiences.ts
git rm apps/frontend/lib/data/calendar-shows.ts
git commit -m "refactor(frontend): rename calendar-shows.ts to calendar-experiences.ts"Phase 5: URL/Routing Changes
Task 27: Add URL redirects for old /shows routes
Files:
-
Modify:
apps/frontend/next.config.js(ornext.config.mjs) -
Step 1: Find next.config file
ls apps/frontend/next.config.*- Step 2: Add redirects
async redirects() {
return [
{ source: '/shows', destination: '/experiences', permanent: true },
{ source: '/shows/:slug', destination: '/experiences/:slug', permanent: true },
{ source: '/admin/shows', destination: '/admin/experiences', permanent: true },
]
}- Step 3: Commit
git add apps/frontend/next.config.js
git commit -m "refactor(frontend): add redirects from /shows to /experiences"Phase 6: i18n Message Renames
Task 28: Rename paraglide message files with shows in name
Files:
-
Rename:
apps/frontend/src/paraglide/messages/*shows*.js→apps/frontend/src/paraglide/messages/*experiences*.js -
Step 1: List all message files with shows
ls apps/frontend/src/paraglide/messages/*shows*.js | wc -lShould be ~100 files
- Step 2: Batch rename using sed
cd apps/frontend/src/paraglide/messages
for f in *shows*.js; do
new="${f//shows/experiences}"
mv "$f" "$new"
done- Step 3: Commit
git add apps/frontend/src/paraglide/messages/
git commit -m "refactor(i18n): batch rename shows message files to experiences"Task 29: Update message key names within files
Files:
-
Modify:
apps/frontend/src/paraglide/messages/*experiences*.js -
Step 1: Update export names
For each file, rename export:
admin_shows_* → admin_experiences_*
booking_shows_* → booking_experiences_*
calendar_modal_shows → calendar_modal_experiences
common_nav_shows → common_nav_experiences
home_upcomingshows_* → home_upcomingexperiences_*
footer_show* → footer_experience*
etc.
- Step 2: Update message content
"Shows" → "Experiences" in actual text strings
- Step 3: Update all imports in components
grep -rn "admin_shows\|booking_shows\|calendar_modal_shows" apps/frontend --include="*.tsx"Update each import
- Step 4: Commit
git add apps/frontend/src/paraglide/messages/
git commit -m "refactor(i18n): update message keys from shows to experiences"Phase 7: Additional Frontend Updates
Task 30: Update remaining show references in hooks and lib
Files:
-
Modify: Various files in
apps/frontend/lib/ -
Step 1: Find all remaining show references
grep -rn "show" apps/frontend/lib --include="*.ts" | grep -v "showDate\|showId\|showCode\|showTime\|showOnly\|showForm\|showPicker\|showCard\|showReminder\|showEvent\|showTable\|showsList" | head -50- Step 2: Update each reference
Focus on:
-
Variable names with
showreferring to the concept -
Text content
-
Comments
-
Step 3: Commit
Task 31: Update admin dashboard components
Files:
-
Modify:
apps/frontend/app/dashboard/pages and components -
Step 1: Find all show references
grep -rn "show" apps/frontend/app/dashboard --include="*.tsx"-
Step 2: Update references
-
UI text
-
Component names
-
Route segments
-
Step 3: Commit
Task 32: Update booking flow components
Files:
-
Modify:
apps/frontend/components/booking/components -
Step 1: Find all show references
grep -rn "show" apps/frontend/components/booking --include="*.tsx"- Step 2: Update references
Focus on:
-
step-tickets.tsx- "Select Show" → "Select Experience" -
checkout-summary.tsx -
experience-option.tsx(if it has show refs) -
Step 3: Commit
Phase 8: Test File Renames
Task 33: Rename test files
Files:
-
Rename:
apps/frontend/__tests__/components/show-event-list.test.tsx→apps/frontend/__tests__/components/experience-event-list.test.tsx -
Rename:
apps/frontend/__tests__/components/upcoming-shows-section.test.tsx→apps/frontend/__tests__/components/upcoming-experiences-section.test.tsx -
Step 1: Rename files
mv apps/frontend/__tests__/components/show-event-list.test.tsx apps/frontend/__tests__/components/experience-event-list.test.tsx
mv apps/frontend/__tests__/components/upcoming-shows-section.test.tsx apps/frontend/__tests__/components/upcoming-experiences-section.test.tsx- Step 2: Update test content
Update all show references to experience
- Step 3: Commit
git add apps/frontend/__tests__/
git commit -m "refactor(tests): rename show test files to experience"Phase 9: Final Verification
Task 34: Grep verification for remaining show references
Files:
-
None (verification only)
-
Step 1: Check for remaining show references
# Should return no results (excluding raw/backup/node_modules)
grep -r "\"shows\"" apps/frontend --include="*.tsx" | grep -v "raw/" | grep -v "backup/" | grep -v "node_modules/"
grep -r "'shows'" apps/frontend --include="*.tsx" | grep -v "raw/" | grep -v "backup/" | grep -v "node_modules/"
grep -rn "ShowCard\|ShowPicker\|ShowReminder\|ShowForm" apps/frontend --include="*.tsx" | grep -v "raw/" | grep -v "backup/"- Step 2: Check for remaining show/Show in variable names
grep -rn "showTitle\|showImage\|showPrice\|showData" apps/frontend --include="*.tsx" | grep -v "raw/" | grep -v "backup/" | grep -v "node_modules/"These should be renamed to experienceTitle, experienceImage, etc.
- Step 3: Report any remaining occurrences
Task 35: Build verification
Files:
-
None (verification only)
-
Step 1: Run build
cd apps/frontend && npm run build- Step 2: Fix any TypeScript errors
Common errors:
-
Import paths not updated after file rename
-
Type references still using old names
-
Step 3: Commit any final fixes
Task 36: Run Convex migration
Files:
-
Modify: Convex database (requires convex CLI)
-
Step 1: Export current data (backup)
npx convex data export > backup.json- Step 2: Run schema migration
npx convex dataMigration --renameTable shows experiences
npx convex dataMigration --renameTable showEvents experienceEvents- Step 3: Verify data integrity
npx convex data query "experiences" | head
npx convex data query "experienceEvents" | head- Step 4: Commit migration
Task 37: Final end-to-end verification
Files:
-
None (manual testing)
-
Step 1: Test homepage
-
Step 2: Test booking flow
-
Step 3: Test admin experience CRUD
-
Step 4: Test i18n switching
Summary
Total Tasks: 37
Estimated Time: 40 hours (large refactor with many file renames and systematic replacements)
Critical Path:
- Schema changes (Tasks 1-5) must complete before domain functions
- Domain function changes (Tasks 6-11) must complete before frontend
- Frontend component renames (Tasks 12-21) unlock parallel workstreams
- i18n renames (Tasks 28-29) can run in parallel with components
- Final verification (Tasks 34-37) after all changes complete
Risk Points:
- Database migration (Task 36) - critical, must backup first
- Import path updates - many files need import updates after file renames
- i18n message key renames - 100+ files to update