Files
thrillwiki_django_no_react/memory-bank/decisions/nextjs_migration.md

3.2 KiB

Next.js Migration Plan

Overview

This document outlines the strategy for migrating ThrillWiki from a Django monolith to a Next.js frontend with API Routes backend while maintaining all existing functionality and design.

Current Architecture

  • Django monolithic application
  • Django templates with HTMX and Alpine.js
  • Django views handling both API and page rendering
  • Django ORM for database operations
  • Custom analytics system
  • File upload handling through Django
  • Authentication through Django

Target Architecture

  • Next.js 14+ application using App Router
  • React components replacing Django templates
  • Next.js API Routes replacing Django views
  • Prisma ORM replacing Django ORM
  • JWT-based authentication system
  • Maintain current DB schema
  • API-first approach with type safety
  • File uploads through Next.js API routes

Component Mapping

Major sections requiring migration:

  1. Parks System:

    • Convert Django views to API routes
    • Convert templates to React components
    • Implement dynamic routing
    • Maintain search functionality
  2. User System:

    • Implement JWT authentication
    • Convert user management to API routes
    • Migrate profile management
    • Handle avatar uploads
  3. Reviews System:

    • Convert to API routes
    • Implement real-time updates
    • Maintain moderation features
  4. Analytics:

    • Convert to API routes
    • Implement client-side tracking
    • Maintain current metrics

API Route Mapping

// Example API route structure
/api
  /auth
    /login
    /register
    /profile
  /parks
    /[id]
    /search
    /nearby
  /reviews
    /[id]
    /create
    /moderate
  /analytics
    /track
    /stats

Migration Phases

Phase 1: Setup & Infrastructure

  1. Initialize Next.js project
  2. Set up Prisma with existing schema
  3. Configure TypeScript
  4. Set up authentication system
  5. Configure file upload handling

Phase 2: Core Features

  1. Parks system migration
  2. User authentication
  3. Basic CRUD operations
  4. Search functionality
  5. File uploads

Phase 3: Advanced Features

  1. Reviews system
  2. Analytics
  3. Moderation tools
  4. Real-time features
  5. Admin interfaces

Phase 4: Testing & Polish

  1. Comprehensive testing
  2. Performance optimization
  3. SEO implementation
  4. Security audit
  5. Documentation updates

Dependencies

Frontend

  • next: ^14.0.0
  • react: ^18.2.0
  • react-dom: ^18.2.0
  • @prisma/client
  • @tanstack/react-query
  • tailwindcss
  • typescript
  • zod (for validation)
  • jwt-decode
  • @headlessui/react

Backend

  • prisma
  • jsonwebtoken
  • bcryptjs
  • multer (file uploads)
  • sharp (image processing)

Data Migration Strategy

  1. Create Prisma schema matching Django models
  2. Write migration scripts for data transfer
  3. Validate data integrity
  4. Implement rollback procedures

Security Considerations

  1. JWT token handling
  2. CSRF protection
  3. Rate limiting
  4. File upload security
  5. API route protection

Performance Optimization

  1. Implement ISR (Incremental Static Regeneration)
  2. Optimize images and assets
  3. Implement caching strategy
  4. Code splitting
  5. Bundle optimization

Rollback Plan

  1. Maintain dual systems during migration
  2. Database backup strategy
  3. Traffic routing plan
  4. Monitoring and alerts