{ "name": "warpdrive", "version": "2.1.1", "description": "An open-source, self-hosted CRM for a company business-development team.", "main": "index.js", "packageManager": "pnpm@9.15.9", "scripts": { "dev": "next dev", "build": "next build", "build:workers": "node scripts/build-workers.mjs", "build:docker": "next build && node scripts/build-workers.mjs", "start": "next start", "test": "vitest run", "test:unit": "vitest run --project unit", "test:integration": "vitest run --project integration", "test:watch": "vitest", "lint": "biome check . && eslint . --no-warn-ignored", "lint:fix": "biome check --write . && eslint . --fix --no-warn-ignored", "typecheck": "tsc --noEmit", "format": "biome format --write .", "db:generate": "drizzle-kit generate", "db:migrate": "drizzle-kit migrate", "db:seed:smoke": "tsx --env-file .env scripts/seed-smoke.ts", "db:seed:smoke:phase5": "tsx --env-file .env scripts/seed-smoke-phase5.ts", "db:seed:demo": "tsx --env-file .env scripts/seed-demo.ts", "email:sweep-spam": "tsx --env-file .env src/entrypoints/sweepSpam.ts" }, "keywords": [], "author": "Nikita Sawinyh", "license": "MIT", "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "3.2.2", "@modelcontextprotocol/sdk": "^1.26.0", "@radix-ui/react-alert-dialog": "^1.1.20", "@radix-ui/react-checkbox": "^1.3.8", "@radix-ui/react-collapsible": "^1.1.15", "@radix-ui/react-dialog": "^1.1.20", "@radix-ui/react-dropdown-menu": "^2.1.21", "@radix-ui/react-popover": "^1.1.20", "@radix-ui/react-progress": "^1.1.8", "@radix-ui/react-radio-group": "^1.4.4", "@radix-ui/react-select": "^2.3.4", "@radix-ui/react-switch": "^1.3.4", "@radix-ui/react-tabs": "^1.1.18", "@radix-ui/react-tooltip": "^1.2.13", "@tanstack/react-query": "^5.101.2", "@tiptap/extension-color": "^3.27.1", "@tiptap/extension-font-family": "^3.27.1", "@tiptap/extension-image": "^3.27.1", "@tiptap/extension-link": "^3.27.1", "@tiptap/extension-text-style": "^3.27.1", "@tiptap/extension-underline": "^3.27.1", "@tiptap/pm": "^3.27.1", "@tiptap/react": "^3.27.1", "@tiptap/starter-kit": "^3.27.1", "@trpc/client": "^11.18.0", "@trpc/react-query": "^11.18.0", "@trpc/server": "^11.18.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", "drizzle-orm": "^0.45.2", "isomorphic-dompurify": "^3.18.0", "jose": "^6.2.3", "lucide-react": "^1.23.0", "marked": "^18.0.5", "mcp-handler": "^1.1.0", "minio": "^8.0.7", "next": "^16.2.9", "pg": "^8.22.0", "pg-boss": "^12.23.1", "posthog-js": "^1.405.2", "posthog-node": "^5.46.0", "react": "^19.2.7", "react-day-picker": "^10.0.1", "react-dom": "^19.2.7", "recharts": "^3.10.1", "sanitize-html": "^2.17.5", "superjson": "^2.2.6", "tailwind-merge": "^3.6.0", "ws": "^8.21.0", "zod": "^4.4.3", "zustand": "^5.0.14" }, "devDependencies": { "@biomejs/biome": "^2.5.1", "@next/eslint-plugin-next": "^16.2.10", "@tailwindcss/postcss": "^4.3.2", "@testcontainers/postgresql": "^12.0.4", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", "@types/jsdom": "^28.0.3", "@types/node": "^26.0.1", "@types/pg": "^8.20.0", "@types/react": "^19.2.17", "@types/react-dom": "^19.2.3", "@types/sanitize-html": "^2.16.1", "@types/ws": "^8.18.1", "@vitejs/plugin-react": "^6.0.3", "babel-plugin-react-compiler": "^1.0.0", "drizzle-kit": "^0.31.10", "esbuild": "^0.28.1", "eslint": "^10.6.0", "eslint-import-resolver-typescript": "^4.4.5", "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import-x": "^4.17.1", "eslint-plugin-react-hooks": "^7.1.1", "eslint-plugin-security": "^4.0.1", "eslint-plugin-sonarjs": "^4.1.0", "jsdom": "^29.1.1", "postcss": "^8.5.16", "tailwindcss": "^4.3.2", "tsx": "^4.22.4", "tw-animate-css": "^1.4.0", "typescript": "^6.0.3", "typescript-eslint": "^8.62.1", "vitest": "^4.1.9" } }