package.json
Rama main · réplica de lectura del repositorio original.
{
"name": "tradepilot",
"version": "0.1.0",
"private": true,
"description": "开源 AI 外贸 CRM、订单履约与产品视频工作台,支持 BYOK、Ollama、Firecrawl、MoneyPrinterTurbo、OpenMontage 和 Docker 自托管。",
"keywords": [
"ai-crm",
"foreign-trade",
"trade-management",
"order-management",
"cross-border",
"self-hosted",
"ollama",
"firecrawl",
"product-video",
"nextjs"
],
"homepage": "https://tradepilot.us.kg/",
"repository": {
"type": "git",
"url": "https://github.com/feifei9126/tradepilot.git"
},
"bugs": {
"url": "https://github.com/feifei9126/tradepilot/issues"
},
"license": "AGPL-3.0",
"author": "TradePilot Contributors",
"scripts": {
"dev": "next dev -p 3458",
"build": "next build",
"start": "node scripts/start-local.mjs",
"start:web": "next start",
"lint": "eslint",
"test": "tsx --test tests/product-video/*.test.ts tests/firecrawl/*.test.ts tests/business/*.test.ts tests/build/*.test.mjs tests/livekit/*.test.ts tests/database/*.test.mjs",
"precfbuild": "node scripts/ensure-cloudflare-native-deps.mjs",
"deploy": "bash install.sh",
"deploy:docker": "bash install.sh",
"deploy:cloudflare": "opennextjs-cloudflare build && opennextjs-cloudflare deploy",
"preview:cloudflare": "opennextjs-cloudflare build && opennextjs-cloudflare preview",
"upload:cloudflare": "opennextjs-cloudflare build && opennextjs-cloudflare upload",
"cf-typegen": "wrangler types --env-interface CloudflareEnv cloudflare-env.d.ts",
"cfbuild": "opennextjs-cloudflare build",
"db:init": "node scripts/init-db.mjs",
"db:migrate": "node scripts/migrate-db.mjs",
"db:backup": "node scripts/db-backup.mjs",
"db:restore": "node scripts/db-restore.mjs",
"firecrawl:deploy": "node scripts/deploy-firecrawl.mjs",
"video-worker": "node workers/openmontage-adapter/server.mjs",
"test:livekit": "tsx --test tests/livekit/*.test.ts",
"test:db": "tsx --test --test-concurrency=1 tests/database/*.integration.ts",
"brand:generate": "node scripts/generate-brand-assets.mjs",
"test:cloudflare": "node scripts/smoke-cloudflare.mjs",
"postcfbuild": "node scripts/fix-cloudflare-pg.mjs",
"test:cloudflare:db": "node scripts/smoke-cloudflare-db.mjs"
},
"dependencies": {
"@auth/drizzle-adapter": "^1.11.3",
"@aws-sdk/client-s3": "^3.1147.0",
"@aws-sdk/s3-request-presigner": "^3.1146.0",
"@base-ui/react": "^1.5.0",
"@ffmpeg-installer/ffmpeg": "^1.1.0",
"@hookform/resolvers": "^5.4.0",
"@livekit/components-react": "^2.9.24",
"@livekit/components-styles": "^1.2.0",
"@neondatabase/serverless": "^1.1.0",
"@tanstack/react-query": "^5.101.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"date-fns": "^4.4.0",
"drizzle-orm": "^0.45.2",
"fast-xml-parser": "5.11.2",
"imapflow": "^2.2.6",
"livekit-client": "^2.22.3",
"livekit-server-sdk": "^2.19.0",
"lucide-react": "^1.17.0",
"mailparser": "^3.9.36",
"motion": "^14.1.0",
"next": "16.4.2",
"next-auth": "^5.0.0-beta.32",
"next-themes": "^0.4.6",
"nodemailer": "^10.0.15",
"openai": "^6.42.0",
"pg": "^8.23.1",
"qrcode": "^1.5.4",
"react": "19.2.4",
"react-dom": "19.2.4",
"react-hook-form": "^7.77.0",
"sonner": "^2.0.7",
"tailwind-merge": "^3.6.0",
"tw-animate-css": "^1.4.0",
"zod": "^4.4.3",
"zustand": "^5.0.14"
},
"devDependencies": {
"@opennextjs/cloudflare": "1.20.13",
"@tailwindcss/postcss": "^4",
"@types/mailparser": "^3.9.0",
"@types/node": "^20",
"@types/nodemailer": "^8.0.2",
"@types/pg": "^8.20.0",
"@types/qrcode": "^1.5.6",
"@types/react": "^19",
"@types/react-dom": "^19",
"braces": "file:vendor/braces",
"dotenv": "^17.4.2",
"drizzle-kit": "^0.31.10",
"eslint": "^9",
"eslint-config-next": "16.4.2",
"tailwindcss": "^4",
"tsx": "^4.22.4",
"typescript": "^5",
"wrangler": "^4.151.0"
},
"engines": {
"node": ">=22.22"
},
"overrides": {
"braces": "$braces",
"@node-minify/core": {
"glob": "10.5.0"
}
}
}