You are an expert full-stack developer. Your task is to build a comprehensive, multi-page web application (MVP) named 'Health Bill Navigator' using Next.js 14 (App Router), TypeScript, Drizzle ORM for PostgreSQL, and Tailwind CSS. The application aims to help users manage, understand, and dispute medical bills.Project Setup:1. Initialize a Next.js 14 project using `create-next-app` with TypeScript, ESLint, Tailwind CSS, and App Router.2. Set up Drizzle ORM for PostgreSQL. Include environment variables for database connection.3. Implement a basic authentication system (registration and login) using Clerk or NextAuth.js (prefer Clerk for simplicity in MVP, but if not possible, a simple session-based auth). For Drizzle schema, create a `users` table: `id (uuid)`, `email (string, unique)`, `passwordHash (string)`, `createdAt (timestamp)`, `updatedAt (timestamp)`.Database Schema (Drizzle ORM):Define the following Drizzle schema for PostgreSQL:* `users`: `id (uuid, primary key)`, `email (text, unique, not null)`, `passwordHash (text, not null)`, `createdAt (timestamp, default now())`, `updatedAt (timestamp, default now())`.* `medicalBills`: `id (uuid, primary key)`, `userId (uuid, foreign key to users.id, not null)`, `originalAmount (numeric, not null)`, `disputedAmount (numeric)`, `currentStatus (varchar, default 'pending_review', not null, enum values like 'pending_review', 'disputed', 'negotiated', 'paid', 'unresolved')`, `billDate (date)`, `providerName (text)`, `billDetails (jsonb)`, `uploadedImageUrl (text)`, `createdAt (timestamp, default now())`, `updatedAt (timestamp, default now())`.* `billItems`: `id (uuid, primary key)`, `billId (uuid, foreign key to medicalBills.id, not null)`, `serviceName (text, not null)`, `serviceCode (text)`, `amount (numeric, not null)`, `dateOfService (date)`, `createdAt (timestamp, default now())`, `updatedAt (timestamp, default now())`.* `disputeLogs`: `id (uuid, primary key)`, `billId (uuid, foreign key to medicalBills.id, not null)`, `userId (uuid, foreign key to users.id, not null)`, `logDate (date, not null)`, `actionTaken (varchar, not null, enum values like 'called_provider', 'sent_letter', 'negotiated', 'filed_complaint')`, `outcome (text)`, `notes (text)`, `createdAt (timestamp, default now())`, `updatedAt (timestamp, default now())`.* `paymentPlans`: `id (uuid, primary key)`, `billId (uuid, foreign key to medicalBills.id, not null)`, `userId (uuid, foreign key to users.id, not null)`, `agreedAmount (numeric, not null)`, `monthlyPayment (numeric, not null)`, `startDate (date, not null)`, `endDate (date)`, `status (varchar, not null, enum values like 'active', 'completed', 'defaulted')`, `createdAt (timestamp, default now())`, `updatedAt (timestamp, default now())`.Multi-Page Structure (Next.js App Router):Create the following page routes and their corresponding UI components:* `/`: Home page (static landing page).* `/login`: User login page.* `/register`: User registration page.* `/dashboard`: User's main dashboard, displaying a summary of their medical bills.* `/dashboard/upload`: Page to upload a new medical bill (image upload component).* `/dashboard/bills/[id]`: Dynamic page to view details of a specific medical bill. This page should show bill items, dispute logs, and payment plans associated with the bill.* `/dashboard/bills/[id]/edit`: Page to edit general bill information.* `/dashboard/bills/[id]/items/add`: Page to manually add a bill item to a specific bill.* `/dashboard/bills/[id]/items/[itemId]/edit`: Page to edit a specific bill item.* `/dashboard/bills/[id]/dispute-logs/add`: Page to add a new dispute log entry for a specific bill.* `/dashboard/bills/[id]/payment-plans/add`: Page to add a new payment plan for a specific bill.* `/resources`: A static page listing general resources for medical bill assistance.* `/profile`: User profile and settings page.API Routes (Next.js App Router - `/app/api`):Implement RESTful API routes with full CRUD operations. All routes should be protected, requiring user authentication.* `/api/auth/register` (POST): Register new user.* `/api/auth/login` (POST): Log in user.* `/api/auth/logout` (POST): Log out user.* `/api/bills` (GET, POST):* GET: Retrieve all medical bills for the authenticated user.* POST: Create a new medical bill. Include logic for mock OCR processing (simple parsing of text input or a placeholder for image processing).* `/api/bills/[id]` (GET, PUT, DELETE):* GET: Retrieve a single medical bill by ID for the authenticated user.* PUT: Update a medical bill by ID.* DELETE: Delete a medical bill by ID.* `/api/bills/[id]/items` (GET, POST):* GET: Retrieve all bill items for a specific medical bill.* POST: Add a new bill item to a specific medical bill.* `/api/bills/[id]/items/[itemId]` (PUT, DELETE):* PUT: Update a specific bill item.* DELETE: Delete a specific bill item.* `/api/bills/[id]/dispute-logs` (GET, POST):* GET: Retrieve all dispute logs for a specific medical bill.* POST: Add a new dispute log for a specific medical bill.* `/api/bills/[id]/dispute-logs/[logId]` (PUT, DELETE):* PUT: Update a specific dispute log.* DELETE: Delete a specific dispute log.* `/api/bills/[id]/payment-plans` (GET, POST):* GET: Retrieve all payment plans for a specific medical bill.* POST: Add a new payment plan for a specific medical bill.* `/api/bills/[id]/payment-plans/[planId]` (PUT, DELETE):* PUT: Update a specific payment plan.* DELETE: Delete a specific payment plan.Key Functionality & Components:* **Authentication:** Implement secure user registration, login, and session management.* **Bill Upload:** A form on `/dashboard/upload` allowing users to upload an image (placeholder for actual image storage, e.g., store URL) and optionally input text for 'mock OCR' processing, which populates initial `billDetails` and `billItems`.* **Dashboard:** Display a list of the user's bills with their `providerName`, `