{
  "name": "pos-desktop-enterprise",
  "version": "0.1.0",
  "private": true,
  "description": "Enterprise offline-first desktop POS system built with Electron, React, TypeScript, Prisma, and PostgreSQL or MySQL.",
  "main": "dist/main/index.js",
  "author": "OpenAI Codex",
  "license": "UNLICENSED",
  "workspaces": [
    "apps/*",
    "packages/*"
  ],
  "scripts": {
    "dev": "concurrently -k \"npm:dev:shared\" \"npm:dev:backend\" \"npm:dev:reporting-worker\" \"npm:dev:main\" \"npm:dev:preload\" \"npm:dev:renderer\" \"npm:dev:electron\"",
    "dev:web": "cross-env POS_WEB_MODE=1 concurrently -k \"npm:dev:shared\" \"npm:dev:backend\" \"npm:dev:reporting-worker\" \"npm:dev:renderer\"",
    "dev:shared": "tsup packages/shared/src/index.ts --watch --format esm,cjs --dts --out-dir dist/shared",
    "dev:backend": "tsup apps/backend/src/index.ts --watch --format cjs --dts --out-dir dist/backend",
    "dev:reporting-worker": "tsup apps/reporting-worker/src/index.ts --watch --format cjs --out-dir dist/reporting-worker",
    "dev:main": "tsup apps/desktop/src/main/index.ts --watch --format cjs --out-dir dist/main --external electron",
    "dev:preload": "tsup apps/desktop/src/preload/index.ts --watch --format cjs --out-dir dist/preload --external electron",
    "dev:renderer": "vite",
    "dev:electron": "wait-on tcp:5173 file:dist/main/index.js file:dist/preload/index.js && cross-env VITE_DEV_SERVER_URL=http://localhost:5173 electron .",
    "build": "npm run clean && npm run build:shared && npm run build:backend && npm run build:reporting-worker && npm run build:main && npm run build:renderer",
    "build:shared": "tsup packages/shared/src/index.ts --format esm,cjs --dts --out-dir dist/shared",
    "build:backend": "tsup apps/backend/src/index.ts --format cjs --dts --out-dir dist/backend",
    "build:reporting-worker": "tsup apps/reporting-worker/src/index.ts --format cjs --out-dir dist/reporting-worker",
    "build:main": "npm run build:main:process && npm run build:preload",
    "build:main:process": "tsup apps/desktop/src/main/index.ts --format cjs --out-dir dist/main --external electron",
    "build:preload": "tsup apps/desktop/src/preload/index.ts --format cjs --out-dir dist/preload --external electron",
    "build:renderer": "vite build",
    "build:web:api": "npm run build:shared && npm run build:backend && npm run build:reporting-worker",
    "clean": "rimraf dist .turbo release",
    "lint": "tsc --noEmit",
    "test": "node scripts/run-tests.cjs",
    "test:backend": "node scripts/run-tests.cjs apps/backend",
    "test:renderer": "node scripts/run-tests.cjs apps/desktop/src/renderer",
    "test:provider-smoke": "node scripts/run-tests.cjs apps/backend/src/integration/provider-smoke.test.ts",
    "test:coverage-gates": "node scripts/test-coverage-gates.cjs",
    "test:build-artifact-smoke": "node scripts/build-artifact-smoke.cjs",
    "test:phase0.7": "npm run test:coverage-gates && npm run test:backend && npm run test:renderer && npm run lint && npm run build && npm run test:build-artifact-smoke",
    "prisma:generate": "node scripts/prisma-provider.cjs postgresql generate",
    "prisma:generate:postgres": "node scripts/prisma-provider.cjs postgresql generate",
    "prisma:generate:mysql": "node scripts/prisma-provider.cjs mysql generate",
    "prisma:validate:mysql": "node scripts/prisma-provider.cjs mysql validate",
    "prisma:migrate": "node scripts/prisma-provider.cjs postgresql migrate dev",
    "prisma:migrate:deploy": "node scripts/prisma-provider.cjs postgresql migrate deploy",
    "prisma:dbpush": "node scripts/prisma-provider.cjs postgresql db push",
    "prisma:dbpush:postgres": "node scripts/prisma-provider.cjs postgresql db push",
    "prisma:dbpush:mysql": "node scripts/prisma-provider.cjs mysql db push",
    "prisma:deploy:mysql": "npm run prisma:generate:mysql && npm run prisma:dbpush:mysql",
    "prisma:bootstrap:mysql": "npm run prisma:deploy:mysql && npm run prisma:seed",
    "prisma:setup:postgres": "npm run prisma:generate:postgres && npm run prisma:dbpush:postgres && npm run prisma:seed",
    "prisma:setup:mysql": "npm run prisma:generate:mysql && npm run prisma:dbpush:mysql && npm run prisma:seed",
    "prisma:seed": "prisma db seed",
    "bootstrap:production-admin": "node scripts/bootstrap-production-admin.cjs",
    "prisma:reset": "node scripts/prisma-provider.cjs postgresql migrate reset --force",
    "data-quality:audit": "node scripts/data-quality-audit.cjs",
    "data-quality:repair": "node scripts/data-quality-repair.cjs",
    "migration:drift-check": "node scripts/migration-drift-check.cjs",
    "package": "npm run build && electron-builder --config electron-builder.yml",
    "serve:web": "cross-env POS_WEB_MODE=1 node scripts/web-host.cjs",
    "start:web": "npm run build && npm run serve:web",
    "serve:web:api": "cross-env POS_WEB_MODE=1 POS_WEB_API_ONLY=1 node scripts/web-host.cjs",
    "start:web:api": "npm run build:web:api && npm run serve:web:api",
    "prisma:generate:env": "node scripts/prisma-generate.cjs",
    "postinstall": "npm run prisma:generate:env"
  },
  "dependencies": {
    "@hookform/resolvers": "^3.9.0",
    "@prisma/client": "^6.8.2",
    "@radix-ui/react-dialog": "^1.1.1",
    "@radix-ui/react-dropdown-menu": "^2.1.1",
    "@radix-ui/react-scroll-area": "^1.2.0",
    "@radix-ui/react-select": "^2.1.1",
    "@radix-ui/react-separator": "^1.1.0",
    "@radix-ui/react-slot": "^1.1.0",
    "@radix-ui/react-switch": "^1.1.0",
    "@radix-ui/react-tabs": "^1.1.0",
    "@socket.io/redis-adapter": "^8.3.0",
    "@tanstack/react-query": "^5.59.0",
    "@tanstack/react-router": "^1.79.4",
    "@tanstack/react-virtual": "^3.10.8",
    "ag-grid-community": "^35.3.0",
    "ag-grid-enterprise": "^35.3.0",
    "ag-grid-react": "^35.3.0",
    "apexcharts": "^5.13.0",
    "class-variance-authority": "^0.7.0",
    "clsx": "^2.1.1",
    "date-fns": "^4.1.0",
    "electron-log": "^5.2.0",
    "electron-updater": "^6.3.9",
    "framer-motion": "^11.11.9",
    "i18next": "^24.2.2",
    "jspdf": "^2.5.2",
    "jspdf-autotable": "^3.8.4",
    "keytar": "^7.9.0",
    "lucide-react": "^0.453.0",
    "pg": "^8.13.1",
    "react": "^18.3.1",
    "react-apexcharts": "^2.1.0",
    "react-dom": "^18.3.1",
    "react-hook-form": "^7.53.0",
    "react-i18next": "^15.1.0",
    "redis": "^5.12.1",
    "socket.io": "^4.8.3",
    "socket.io-client": "^4.8.3",
    "sonner": "^1.5.0",
    "tailwind-merge": "^2.5.3",
    "tailwindcss-animate": "^1.0.7",
    "xlsx": "^0.18.5",
    "zod": "^3.23.8",
    "zustand": "^5.0.0"
  },
  "devDependencies": {
    "@types/node": "^22.8.1",
    "@types/react": "^18.3.3",
    "@types/react-dom": "^18.3.0",
    "@vitejs/plugin-react": "^4.3.3",
    "autoprefixer": "^10.4.20",
    "concurrently": "^9.0.1",
    "cross-env": "^7.0.3",
    "electron": "^33.0.0",
    "electron-builder": "^25.1.8",
    "postcss": "^8.4.47",
    "prisma": "^6.8.2",
    "rimraf": "^6.0.1",
    "tailwindcss": "^3.4.13",
    "tsup": "^8.3.0",
    "typescript": "^5.6.3",
    "vite": "^5.4.10",
    "vitest": "^2.1.4",
    "wait-on": "^8.0.1"
  }
}
