{
  "name": "my-project",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "eslint .",
    "test": "vitest run",
    "test:watch": "vitest",
    "test:forms": "vitest run lib/__tests__/form-schemas.test.ts lib/__tests__/form-api-tenant-isolation.test.ts lib/__tests__/tenant-isolation.test.ts",
    "test:e2e:preflight": "node scripts/preflight-e2e.mjs",
    "test:e2e": "playwright test",
    "test:e2e:ui": "playwright test --ui",
    "test:e2e:headed": "playwright test --headed",
    "test:all": "npm test && npm run test:e2e",
    "env:check": "node scripts/env-check.mjs",
    "typecheck": "tsc --noEmit",
    "db:check": "node scripts/check-mysql.mjs",
    "db:setup": "node scripts/setup-fresh-database.mjs",
    "db:migrate": "node scripts/run-migrations.mjs",
    "db:docker:up": "docker compose up -d",
    "db:docker:down": "docker compose down",
    "db:docker:setup": "npm run db:docker:up && node scripts/wait-for-mysql.mjs && npm run db:setup && npm run db:seed:super-admin:fresh",
    "db:verify": "node scripts/verify-database.mjs && node scripts/verify-tenant-isolation.mjs",
    "mpesa:check": "node scripts/mpesa-sandbox-check.mjs",
    "exports:process": "node scripts/process-exports.mjs",
    "reports:process": "node scripts/process-scheduled-reports.mjs",
    "smoke": "node scripts/smoke-platform.mjs",
    "setup:cron": "node scripts/ensure-cron-secret.mjs",
    "predeploy": "node scripts/predeploy.mjs",
    "hardening": "node scripts/production-hardening.mjs",
    "hardening:quick": "node scripts/production-hardening.mjs --skip-build",
    "reconcile:payments": "node scripts/reconcile-payments.mjs",
    "preflight": "node scripts/preflight-env.mjs",
    "db:seed:demo": "npx tsx database/seed-demo-tenants.ts",
    "db:seed:demo:fresh": "npx tsx database/seed-demo-tenants.ts --fresh",
    "db:seed:admin": "npx tsx database/seed-admin.ts",
    "db:seed:platform": "npx tsx database/seed-super-admin-platform.ts",
    "db:seed:platform:fresh": "npx tsx database/seed-super-admin-platform.ts --fresh",
    "db:seed:super-admin": "npx tsx database/seed-super-admin-full.ts",
    "db:seed:super-admin:fresh": "npx tsx database/seed-super-admin-full.ts --fresh",
    "ui:audit:responsive": "node scripts/responsive-ui-audit.mjs",
    "ui:fix:filters": "node scripts/fix-responsive-filters.mjs",
    "ui:fix:tables": "node scripts/wrap-dashboard-tables.mjs",
    "ui:migrate:layout": "node scripts/migrate-dashboard-layout.mjs",
    "ui:fix:meta": "node scripts/fix-dashboard-meta-hook.mjs",
    "ui:audit:branding": "node scripts/branding-audit.mjs"
  },
  "dependencies": {
    "@hookform/resolvers": "^3.9.1",
    "@radix-ui/react-accordion": "1.2.12",
    "@radix-ui/react-alert-dialog": "1.1.15",
    "@radix-ui/react-aspect-ratio": "1.1.8",
    "@radix-ui/react-avatar": "1.1.11",
    "@radix-ui/react-checkbox": "1.3.3",
    "@radix-ui/react-collapsible": "1.1.12",
    "@radix-ui/react-context-menu": "2.2.16",
    "@radix-ui/react-dialog": "1.1.15",
    "@radix-ui/react-dropdown-menu": "2.1.16",
    "@radix-ui/react-hover-card": "1.1.15",
    "@radix-ui/react-label": "2.1.8",
    "@radix-ui/react-menubar": "1.1.16",
    "@radix-ui/react-navigation-menu": "1.2.14",
    "@radix-ui/react-popover": "1.1.15",
    "@radix-ui/react-progress": "1.1.8",
    "@radix-ui/react-radio-group": "1.3.8",
    "@radix-ui/react-scroll-area": "1.2.10",
    "@radix-ui/react-select": "2.2.6",
    "@radix-ui/react-separator": "1.1.8",
    "@radix-ui/react-slider": "1.3.6",
    "@radix-ui/react-slot": "1.2.4",
    "@radix-ui/react-switch": "1.2.6",
    "@radix-ui/react-tabs": "1.1.13",
    "@radix-ui/react-toast": "1.2.15",
    "@radix-ui/react-toggle": "1.1.10",
    "@radix-ui/react-toggle-group": "1.1.11",
    "@radix-ui/react-tooltip": "1.2.8",
    "@vercel/analytics": "1.6.1",
    "autoprefixer": "^10.4.20",
    "bcryptjs": "^3.0.3",
    "class-variance-authority": "^0.7.1",
    "clsx": "^2.1.1",
    "cmdk": "1.1.1",
    "date-fns": "4.1.0",
    "dotenv": "^17.4.2",
    "embla-carousel-react": "8.6.0",
    "input-otp": "1.4.2",
    "jsonwebtoken": "^9.0.3",
    "lucide-react": "^0.564.0",
    "mysql2": "^3.22.3",
    "next": "^16.2.6",
    "next-themes": "^0.4.6",
    "nodemailer": "^8.0.7",
    "react": "^19",
    "react-day-picker": "9.13.2",
    "react-dom": "^19",
    "react-hook-form": "^7.54.1",
    "react-resizable-panels": "^2.1.7",
    "recharts": "2.15.0",
    "sonner": "^1.7.1",
    "swr": "^2.4.1",
    "tailwind-merge": "^3.3.1",
    "vaul": "^1.1.2",
    "zod": "^3.24.1",
    "zustand": "^5.0.13"
  },
  "overrides": {
    "next": {
      "postcss": "8.5.10"
    }
  },
  "devDependencies": {
    "@playwright/test": "^1.60.0",
    "@tailwindcss/postcss": "^4.2.0",
    "@types/bcryptjs": "^3.0.0",
    "@types/jsonwebtoken": "^9.0.10",
    "@types/node": "^22",
    "@types/nodemailer": "^8.0.0",
    "@types/react": "^19",
    "@types/react-dom": "^19",
    "@vitejs/plugin-react": "^4.3.4",
    "postcss": "^8.5",
    "tailwindcss": "^4.2.0",
    "tw-animate-css": "1.3.3",
    "typescript": "5.7.3",
    "vitest": "^3.2.4"
  },
  "allowScripts": {
    "esbuild@0.27.7": true,
    "sharp@0.34.5": true
  }
}
