内容分四块: 1、产品规划产出 —— MCN 短视频整合营销工作台的①段五份(1a 需求/1b 竞品/1c 画像/1d 策略/1e 场景)、②段两份(2a 功能/2b 布局)、③段界面(DESIGN.md 契约与令牌表 + mcn-workbench.html 原型 + 实测/会诊/审查三份 + 23 张闸门截图)。 2、开源竞品调研 —— 5 个内容工作台项目的取证原始件与 1b 系列分析文档。 3、参考资料 —— 竞品视频抽帧 1145 张 + 2 个源视频 + 功能点截图。 4、机制侧 —— 协作脚本与状态台账、工作区记忆日志、抽帧/OCR 脚本。 .gitignore 只排运行时日志、脚本备份副本与一次性探针输出,其余按原样入库。
204 lines
7.6 KiB
JSON
204 lines
7.6 KiB
JSON
{
|
|
"name": "postsider",
|
|
"version": "1.3.0",
|
|
"description": "PostSider - open-source social media scheduler for 30+ platforms (backend monorepo)",
|
|
"main": "index.js",
|
|
"license": "AGPL-3.0",
|
|
"homepage": "https://postsider.com",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/lumizone/postsider.git"
|
|
},
|
|
"bugs": {
|
|
"url": "https://github.com/lumizone/postsider/issues"
|
|
},
|
|
"keywords": [
|
|
"social-media",
|
|
"scheduler",
|
|
"self-hosted",
|
|
"mcp",
|
|
"nestjs",
|
|
"nextjs"
|
|
],
|
|
"author": "Lumi Zone Łukasz Blania <[email protected]>",
|
|
"engines": {
|
|
"node": ">=20.17.0 <23.0.0"
|
|
},
|
|
"packageManager": "[email protected]",
|
|
"scripts": {
|
|
"dev": "pnpm run --filter ./apps/orchestrator --filter ./apps/backend --parallel dev",
|
|
"dev-backend": "pnpm run --filter ./apps/backend --parallel dev",
|
|
"pm2": "pnpm run pm2-run",
|
|
"publish-sdk": "pnpm run --filter ./apps/sdk publish",
|
|
"pm2-run": "pnpm run prisma-migrate-deploy && pm2-runtime start ecosystem.config.js",
|
|
"build": "cross-env NODE_OPTIONS=--max-old-space-size=4096 pnpm -r --workspace-concurrency=1 --filter ./apps/backend --filter ./apps/orchestrator run build",
|
|
"build:backend": "rm -rf apps/backend/dist && cross-env NODE_OPTIONS=--max-old-space-size=4096 pnpm --filter ./apps/backend run build",
|
|
"build:orchestrator": "rm -rf apps/orchestrator/dist && cross-env NODE_OPTIONS=--max-old-space-size=4096 pnpm --filter ./apps/orchestrator run build",
|
|
"build:sdk": "pnpm --filter ./apps/sdk exec tsup",
|
|
"dev:backend": "rm -rf apps/backend/dist && pnpm --filter ./apps/backend run dev",
|
|
"dev:orchestrator": "rm -rf apps/orchestrator/dist && pnpm --filter ./apps/orchestrator run dev",
|
|
"dev:frontend": "pnpm --filter ./apps/frontend run dev",
|
|
"start:prod:orchestrator": "pnpm --filter ./apps/orchestrator run start",
|
|
"start:prod:backend": "pnpm --filter ./apps/backend run start",
|
|
"dev:docker": "docker compose -f ./docker-compose.dev.yaml up -d",
|
|
"commands:build:development": "pnpm --filter ./apps/commands run build",
|
|
"bootstrap": "pnpm --filter ./apps/commands run bootstrap",
|
|
"prisma-generate": "pnpm dlx [email protected] generate --schema ./libraries/nestjs-libraries/src/database/prisma/schema.prisma",
|
|
"prisma-db-push": "pnpm dlx [email protected] db push --schema ./libraries/nestjs-libraries/src/database/prisma/schema.prisma",
|
|
"prisma-db-pull": "pnpm dlx [email protected] db pull --schema ./libraries/nestjs-libraries/src/database/prisma/schema.prisma",
|
|
"prisma-migrate-dev": "pnpm dlx [email protected] migrate dev --schema ./libraries/nestjs-libraries/src/database/prisma/schema.prisma",
|
|
"prisma-migrate-deploy": "pnpm exec prisma migrate deploy --schema ./libraries/nestjs-libraries/src/database/prisma/schema.prisma",
|
|
"prisma-migrate-status": "pnpm dlx [email protected] migrate status --schema ./libraries/nestjs-libraries/src/database/prisma/schema.prisma",
|
|
"prisma-reset": "cd ./libraries/nestjs-libraries/src/database/prisma && pnpm dlx [email protected] db push --force-reset && pnpx [email protected] db push",
|
|
"postinstall": "pnpm run prisma-generate",
|
|
"test": "jest --coverage --reporters=default --reporters=jest-junit --forceExit",
|
|
"test:handles": "jest --runInBand --detectOpenHandles"
|
|
},
|
|
"dependencies": {
|
|
"@atproto/api": "^0.15.15",
|
|
"@aws-sdk/client-s3": "^3.787.0",
|
|
"@aws-sdk/s3-request-presigner": "^3.787.0",
|
|
"@casl/ability": "^6.5.0",
|
|
"@nest-lab/throttler-storage-redis": "^1.2.0",
|
|
"@nestjs/cli": "^11.0.21",
|
|
"@nestjs/common": "^11.1.21",
|
|
"@nestjs/core": "^11.1.21",
|
|
"@nestjs/microservices": "^11.1.21",
|
|
"@nestjs/platform-express": "^11.1.21",
|
|
"@nestjs/schedule": "^6.1.3",
|
|
"@nestjs/swagger": "^11.4.3",
|
|
"@nestjs/throttler": "^6.5.0",
|
|
"@neynar/nodejs-sdk": "^3.112.0",
|
|
"@polar-sh/sdk": "^0.48.1",
|
|
"@prisma/client": "6.5.0",
|
|
"@sentry/nestjs": "^10.26.0",
|
|
"@sentry/profiling-node": "^10.25.0",
|
|
"@temporalio/activity": "^1.14.0",
|
|
"@temporalio/client": "^1.14.0",
|
|
"@temporalio/common": "^1.14.0",
|
|
"@temporalio/worker": "^1.14.0",
|
|
"@temporalio/workflow": "^1.14.0",
|
|
"@types/bcrypt": "^5.0.2",
|
|
"@types/concat-stream": "^2.0.3",
|
|
"@types/facebook-nodejs-business-sdk": "^20.0.2",
|
|
"@types/jsonwebtoken": "^9.0.5",
|
|
"@types/lodash": "^4.14.202",
|
|
"@types/md5": "^2.3.5",
|
|
"@types/mime": "^4.0.0",
|
|
"@types/mime-types": "^2.1.4",
|
|
"@types/multer": "^1.4.11",
|
|
"@types/nodemailer": "^6.4.17",
|
|
"@types/parse5": "v6.0.1",
|
|
"@types/remove-markdown": "^0.3.4",
|
|
"@types/sha256": "^0.2.2",
|
|
"@types/striptags": "^0.0.5",
|
|
"@types/yup": "^0.32.0",
|
|
"axios": "^1.18.0",
|
|
"bcrypt": "^6.0.0",
|
|
"bs58": "^6.0.0",
|
|
"bufferutil": "^4.0.8",
|
|
"class-transformer": "^0.5.1",
|
|
"class-validator": "^0.14.1",
|
|
"class-validator-jsonschema": "^5.1.0",
|
|
"compression": "^1.8.1",
|
|
"concat-stream": "^2.0.0",
|
|
"cookie-parser": "^1.4.7",
|
|
"dayjs": "^1.11.10",
|
|
"dotenv": "^16.5.0",
|
|
"dotenv-cli": "^8.0.0",
|
|
"evp_bytestokey": "^1.0.3",
|
|
"facebook-nodejs-business-sdk": "^21.0.5",
|
|
"ffprobe-static": "^3.1.0",
|
|
"file-type": "^21.3.4",
|
|
"google-auth-library": "^9.11.0",
|
|
"googleapis": "^137.1.0",
|
|
"image-to-pdf": "^3.0.2",
|
|
"ioredis": "^5.3.2",
|
|
"isomorphic-dompurify": "^3.10.0",
|
|
"json-to-graphql-query": "^2.2.5",
|
|
"jsonwebtoken": "^9.0.2",
|
|
"lodash": "^4.17.21",
|
|
"mime": "^4.1.0",
|
|
"mime-types": "^2.1.35",
|
|
"multer": "^1.4.5-lts.1",
|
|
"music-metadata": "^11.12.3",
|
|
"nestjs-command": "^3.1.4",
|
|
"nestjs-real-ip": "^3.0.1",
|
|
"nestjs-temporal-core": "^3.2.0",
|
|
"node-fetch": "^3.3.2",
|
|
"node-telegram-bot-api": "^0.66.0",
|
|
"nodemailer": "^9.0.1",
|
|
"nostr-tools": "^2.18.2",
|
|
"openai": "^6.2.0",
|
|
"p-limit": "^3.1.0",
|
|
"parse5": "^6.0.1",
|
|
"pdf-lib": "^1.17.1",
|
|
"prisma": "6.5.0",
|
|
"reflect-metadata": "^0.2.2",
|
|
"remove-markdown": "^0.5.0",
|
|
"resend": "^3.2.0",
|
|
"rss-parser": "^3.13.0",
|
|
"rxjs": "^7.8.0",
|
|
"sharp": "^0.35.4",
|
|
"slugify": "^1.6.6",
|
|
"striptags": "^3.2.0",
|
|
"subtitle": "4.2.2",
|
|
"tldts": "^6.1.47",
|
|
"transloadit": "^3.0.2",
|
|
"tslib": "^2.3.0",
|
|
"tweetnacl": "^1.0.3",
|
|
"twitter-api-v2": "^1.29.0",
|
|
"twitter-text": "^3.1.0",
|
|
"utf-8-validate": "^5.0.10",
|
|
"uuid": "^14.0.2",
|
|
"ws": "^8.21.0",
|
|
"yargs": "^17.7.2",
|
|
"yup": "^1.4.0",
|
|
"zod": "^3.25.76"
|
|
},
|
|
"devDependencies": {
|
|
"@babel/preset-env": "^7.29.7",
|
|
"@nestjs/schematics": "^11.1.0",
|
|
"@nestjs/testing": "^11.1.21",
|
|
"@swc-node/register": "1.9.2",
|
|
"@swc/cli": "0.3.14",
|
|
"@swc/core": "1.5.7",
|
|
"@types/cache-manager-redis-store": "^2.0.4",
|
|
"@types/compression": "^1.8.1",
|
|
"@types/cookie-parser": "^1.4.6",
|
|
"@types/jest": "29.5.12",
|
|
"@types/jsdom": "^28.0.3",
|
|
"@types/node": "18.16.9",
|
|
"@types/node-telegram-bot-api": "^0.64.7",
|
|
"@types/uuid": "^9.0.8",
|
|
"@types/ws": "^8.18.1",
|
|
"@types/yargs": "^17.0.32",
|
|
"@typescript-eslint/eslint-plugin": "7.18.0",
|
|
"@typescript-eslint/parser": "7.18.0",
|
|
"babel-jest": "29.7.0",
|
|
"cross-env": "^10.0.0",
|
|
"eslint": "8.57.0",
|
|
"eslint-config-prettier": "^9.0.0",
|
|
"eslint-plugin-import": "2.32.0",
|
|
"fast-check": "^4.8.0",
|
|
"fs-extra": "^11.3.0",
|
|
"jest": "29.7.0",
|
|
"jest-environment-node": "^29.4.1",
|
|
"jest-junit": "^16.0.0",
|
|
"jest-mock-extended": "^4.0.0-beta1",
|
|
"nodemon": "^3.1.9",
|
|
"prettier": "^2.6.2",
|
|
"ts-jest": "^29.1.0",
|
|
"ts-node": "10.9.2",
|
|
"tsup": "^8.5.0",
|
|
"typescript": "5.5.4"
|
|
},
|
|
"volta": {
|
|
"node": "20.17.0"
|
|
},
|
|
"jest-junit": {
|
|
"outputDirectory": "./reports",
|
|
"outputName": "junit.xml"
|
|
}
|
|
}
|