9.9 KiB
PHASE 14: Cleanup & Testing
Status: ⬜ Not Started
Estimated Time: 15-18 hours
Priority: CRITICAL
Depends On: Phase 13 (Next.js Optimization)
Blocks: Production Deployment
🎯 Goal
Complete removal of all Supabase dependencies, verify 100% functionality in Next.js 15, and ensure production readiness. This is the FINAL phase.
📋 Tasks
Task 14.1: Remove Supabase Files & Dependencies (3 hours)
Step 1: Delete Supabase Integration Directory
rm -rf src/integrations/supabase/
Step 2: Delete Supabase Client Files
rm src/lib/supabaseClient.ts
rm src/lib/supabaseHelpers.ts
Step 3: Remove Package Dependency
bun remove @supabase/supabase-js
bun install # Update lock file
Step 4: Clean Environment Variables
Edit .env.local and .env.example:
- Remove
NEXT_PUBLIC_SUPABASE_URL - Remove
NEXT_PUBLIC_SUPABASE_ANON_KEY - Verify
NEXT_PUBLIC_DJANGO_API_URLis set correctly - Verify all required Next.js env vars present
Checklist
src/integrations/supabase/deletedsrc/lib/supabaseClient.tsdeletedsrc/lib/supabaseHelpers.tsdeleted@supabase/supabase-jsremoved frompackage.jsonpackage-lock.jsonupdated- Supabase env vars removed
- Django API URL configured
Task 14.2: Final Verification (2 hours)
Run these commands - ALL MUST RETURN ZERO RESULTS:
# 1. Check for Supabase imports
grep -r "from '@supabase/supabase-js'" src/ --include="*.ts" --include="*.tsx"
# Expected: No results
# 2. Check for Supabase client imports
grep -r "from '@/lib/supabaseClient'" src/ --include="*.ts" --include="*.tsx"
# Expected: No results
# 3. Check for any supabase usage (excluding comments)
grep -r "supabase\." src/ --include="*.ts" --include="*.tsx" | grep -v "//"
# Expected: No results (or only in comments)
# 4. Check package.json
cat package.json | grep supabase
# Expected: No results
# 5. Check for Supabase types
grep -r "import.*Database.*from.*supabase" src/
# Expected: No results
Checklist
- Zero Supabase imports found
- Zero Supabase usage found
- Zero Supabase in package.json
- Zero Supabase types imported
Task 14.3: TypeScript Compilation (1 hour)
# Run TypeScript compiler with Next.js
bun run type-check
# Or using Next.js lint
bun run lint
Checklist
- TypeScript compiles without errors
- All imports resolve correctly
- All types are defined
- No
anytypes added (follow TYPESCRIPT_ANY_POLICY.md)
Task 14.4: Next.js Build Test (2 hours)
# Production build with Turbopack
bun run build
# Verify build output
ls -la .next/
Checklist
- Build completes successfully
- No build errors
- No build warnings (or acceptable warnings only)
.next/directory generated correctly- Turbopack optimization applied
- Server components compiled
- Client components bundled separately
- Static pages generated (if using ISR/SSG)
- Build size is reasonable
Next.js Specific Checks
- Server components work in build
- Client components work in build
- API routes function
- Metadata API generates correct tags
- Image optimization working
- Font optimization working
Task 14.5: Integration Testing (5 hours)
Run tests in both development and production modes:
# Development mode
bun run dev
# Production mode
bun run build && bun run start
Test EVERY major flow:
Authentication (30 min)
- Register new user
- Login with email/password
- Login with Google OAuth
- Login with GitHub OAuth
- Enable MFA/TOTP
- Disable MFA/TOTP
- Logout
- Password reset
Entity CRUD via Sacred Pipeline (1 hour)
- Submit new park → appears in moderation queue
- Submit new ride → appears in moderation queue
- Submit new company → appears in moderation queue
- Submit new ride model → appears in moderation queue
- Moderator approves submission → entity appears
- Edit existing entity → creates submission → approve → changes apply
- Delete entity → creates submission → approve → entity deleted
Reviews & Social (45 min)
- Write review → creates submission → approve → appears
- Mark review helpful
- Add ride credit → creates submission → approve → appears
- Create top list
- Add items to top list
- Reorder top list items
- Delete top list
Media (30 min)
- Upload photo to park
- Upload photo to ride
- Edit photo caption
- Delete photo
- Verify CloudFlare URLs
Search (30 min)
- Global search works
- Park search with filters works
- Ride search with filters works
- Company search works
- Autocomplete suggests
Moderation (30 min)
- View moderation queue
- Claim submission
- Lock extends automatically
- Approve submission
- Reject submission
- Selective approve (approve some items, reject others)
- Lock releases on navigation
Admin (30 min)
- View admin dashboard
- View moderation stats
- View pipeline health
- Manage reports
- Manage contact submissions
Other Features (30 min)
- Contact form submission
- Timeline events display
- Entity history works
- Version diffs work
- Profile editing works
- Settings pages work
Task 14.6: Next.js Specific Testing (2 hours)
Server-Side Rendering (SSR)
- Pages render on server
- Data fetching works server-side
- Metadata appears in HTML source
- No hydration errors
Client-Side Navigation
- App Router navigation works
- Parallel routes work (if used)
- Intercepting routes work (if used)
- Loading states display correctly
Performance
- Turbopack hot reload is fast
- Production build is optimized
- Bundle sizes are acceptable
- Core Web Vitals meet targets:
- LCP < 2.5s
- FID < 100ms
- CLS < 0.1
Environment Variables
- Server-side env vars work
- Client-side env vars work (NEXT_PUBLIC_*)
- No secrets exposed to client
Task 14.7: Sacred Pipeline Verification (1 hour)
CRITICAL: Verify pipeline integrity
- Can submit new park → goes to queue
- Can submit new ride → goes to queue
- Can submit new company → goes to queue
- Can edit park → goes to queue
- Can edit ride → goes to queue
- Can edit company → goes to queue
- Can delete park → goes to queue
- Can delete ride → goes to queue
- Can delete company → goes to queue
- Approval creates entity/applies changes
- Rejection saves reason
- No way to bypass moderation
- All changes create versions (pghistory)
Task 14.8: Browser Console Check (30 min)
Open dev tools in browser and check:
- No errors in console
- No failed API requests (check Network tab)
- No 404s
- No CORS errors
- No authentication errors
- All API calls go to Django (not Supabase)
Task 14.9: Final Documentation Update (30 min)
- Update migration README with completion status
- Document any known issues
- Document deployment notes
- Update main project README if needed
🎯 Final Success Criteria
Code Cleanliness
- Zero Supabase dependencies in code
- Zero Supabase dependencies in package.json
- All imports resolve
- All TypeScript errors fixed
- Build succeeds without errors
Functionality
- Authentication works (all flows)
- All entity CRUD works via Sacred Pipeline
- Reviews work
- Ride credits work
- Top lists work
- Photos work
- Search works
- Moderation works
- Admin functions work
- Contact form works
- Timeline works
- History works
Sacred Pipeline
- ALL entity changes go through ContentSubmission
- NO direct database writes possible
- Moderation queue functional
- Approval creates versions
- Rejection saves reason
- No bypass mechanisms exist
Performance
- Pages load quickly
- Search is responsive
- No memory leaks
- API requests are reasonable
🚀 Deployment
Once ALL success criteria are met:
1. Final Commit
git add .
git commit -m "Complete Supabase→Django + React→Next.js 15 migration - All phases complete"
git push
2. Deploy to Staging
# Deploy Django backend to staging
# Deploy frontend to staging (Vercel/etc)
3. Staging Verification (2-4 hours)
- Run ALL integration tests again in staging
- Monitor error logs
- Check API response times
- Verify Sacred Pipeline in staging
4. Production Deployment
Only after staging is 100% verified:
# Deploy Django backend to production
# Deploy frontend to production
5. Post-Deployment Monitoring (24 hours)
- Watch error logs closely
- Monitor API response times
- Check Sacred Pipeline is working
- Verify no Supabase errors
- Monitor user feedback
📝 Rollback Plan
If critical issues are found:
- Immediately rollback frontend deployment
- Rollback backend deployment if needed
- Investigate issue
- Fix in development
- Re-test thoroughly
- Re-deploy
🎉 MIGRATION COMPLETE!
Once Phase 14 is finished and verified:
✅ Supabase is 100% removed.
✅ ThrillWiki runs on Django REST API.
✅ Frontend is Next.js 15 + App Router + Turbopack.
✅ Sacred Pipeline remains intact.
✅ All features work.
✅ Package manager is Bun.
✅ Environment variables properly configured.
Celebrate, but monitor closely for 24-48 hours post-deployment.
🔗 Related Files
migration/README.md- OverviewCOMPLETE_SUPABASE_REMOVAL_AUDIT_AND_PLAN.md- Original audit- All phase documents (01-12) - Implementation guides
Document Version: 1.0
Last Updated: November 9, 2025