mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-25 06:14:59 +00:00
4.7 KiB
4.7 KiB
Next.js Migration Guide
Overview
Complete migration from Vite SPA to Next.js 15 App Router while maintaining all existing functionality.
Migration Strategy
Phase 1: Setup ✅
- Install Next.js 15.1.6 and React 19
- Install Next.js dependencies (@next/third-parties, sharp)
- Create next.config.ts
- Create App Router structure
- Migrate environment variables
Phase 2: Core Structure (In Progress)
- Convert App.tsx to root layout + page structure
- Setup authentication middleware
- Create nested layouts for each level
- Implement file-based routing
- Migrate DBAL integration to Next.js
Phase 3: Component Migration
- Convert Level components to route pages
- Setup Server Components (public pages)
- Setup Client Components (interactive features)
- Migrate shadcn/ui components
- Update imports and paths
Phase 4: Features
- Implement API routes for DBAL operations
- Setup server actions for auth
- Add SSR/SSG for public pages
- Implement middleware for auth protection
- Image optimization with next/image
- Font optimization
Phase 5: Docker & Deployment
- Update Dockerfile for Next.js standalone
- Update docker-compose files
- Test production build
- Update CI/CD workflows
File Structure
app/
├── layout.tsx # Root layout with providers
├── page.tsx # Level 1 (public home)
├── login/
│ └── page.tsx # Login/Register page
├── (auth)/ # Auth-protected routes
│ ├── layout.tsx # Auth layout with user context
│ ├── dashboard/ # Level 2 - User area
│ │ └── page.tsx
│ ├── admin/ # Level 3 - Admin panel
│ │ └── page.tsx
│ ├── builder/ # Level 4 - God mode
│ │ └── page.tsx
│ └── supergod/ # Level 5 - Supergod mode
│ └── page.tsx
├── api/ # API routes
│ ├── auth/
│ │ ├── login/route.ts
│ │ ├── register/route.ts
│ │ └── logout/route.ts
│ └── dbal/
│ └── [...path]/route.ts # DBAL proxy routes
└── _components/ # Shared components (not routes)
Key Decisions
Server vs Client Components
-
Server Components (default):
- Level 1 (public landing)
- Static content
- Layout shells
-
Client Components ("use client"):
- Level 2-5 (require interactivity)
- Forms and inputs
- State management
- DBAL operations
- Canvas/editor components
Routing Strategy
- File-based routing with App Router
- Route groups
(auth)for protected routes - Middleware for authentication checks
- Dynamic routes for user-specific pages
State Management
- Server state: Server components + server actions
- Client state: React Context + hooks (existing)
- Form state: React Hook Form (existing)
- Async state: TanStack Query (existing)
DBAL Integration
- Keep existing TypeScript DBAL client
- API routes proxy to C++ daemon
- Client components use DBAL hooks
- Server components use direct Prisma
Benefits of Next.js
-
Performance:
- Server-side rendering for faster initial load
- Automatic code splitting
- Image optimization
- Font optimization
-
SEO:
- Server-rendered pages
- Dynamic meta tags
- Sitemap generation
-
Developer Experience:
- File-based routing
- Built-in API routes
- TypeScript support
- Fast Refresh
-
Production:
- Optimized builds
- Edge runtime support
- Middleware for auth
- Better error handling
Compatibility
Preserved Features
- ✅ All 5 levels functionality
- ✅ Authentication system
- ✅ DBAL integration
- ✅ Prisma database
- ✅ Shadcn/ui components
- ✅ Tailwind CSS
- ✅ Docker deployment
- ✅ Multi-tenant support
- ✅ All existing hooks and utilities
New Capabilities
- ✅ SSR for public pages
- ✅ API routes
- ✅ Middleware auth
- ✅ Image optimization
- ✅ Incremental Static Regeneration (ISR)
Testing Strategy
- Development: Test each level after migration
- Build: Ensure production build works
- E2E: Run existing Playwright tests
- Docker: Verify container deployment
- Performance: Compare bundle sizes and load times
Rollback Plan
Git tags mark each phase - can rollback to any phase if issues arise.
Progress Tracking
- Phase 1: ✅ Complete
- Phase 2: 🔄 In Progress
- Phase 3: ⏳ Pending
- Phase 4: ⏳ Pending
- Phase 5: ⏳ Pending