Files
OpenFrame/package.json
T
yusufipk 52e4169db2 feat: add project bulk download and bulk video delete
Add a "Download project" / "Download selected" flow that builds a
server-side manifest of downloadable media, plus a selection mode with
bulk delete for project videos.

Gate viewer downloads behind a new project allowDownloads setting
(default off, opt-in). Admins can always download; enabling on a public
project allows anonymous visitors to download. Enforce the setting on
every download surface (manifest, version, asset, watch, video routes)
via canDownloadProjectMedia.

Add rate limits for the manifest endpoint, host allowlisting for direct
download URLs, and configurable file/byte caps.

Closes #16
Closes #19
2026-06-27 13:24:05 +02:00

98 lines
2.9 KiB
JSON

{
"name": "openframe",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"prebuild": "bun run typecheck",
"build": "next build",
"start": "next start",
"start:docker": "sh ./scripts/docker-entrypoint.sh",
"lint": "eslint --max-warnings=0",
"format": "prettier --write .",
"format:check": "prettier --check .",
"typecheck": "tsc --noEmit",
"check": "bun run lint && bun run format:check && bun run typecheck",
"prepare": "husky",
"postinstall": "prisma generate",
"db:generate": "prisma generate",
"db:push": "prisma db push",
"db:migrate": "prisma migrate deploy",
"db:seed": "prisma db seed",
"db:setup": "bun run db:generate && bun run db:migrate",
"self-host:bootstrap": "bun run scripts/self-host-bootstrap.ts",
"r2:configure-cors": "bun run scripts/configure-r2-cors.ts",
"r2:cleanup-orphans:dry": "bun run scripts/r2-orphan-cleanup.ts --dry-run",
"r2:cleanup-orphans": "bun run scripts/r2-orphan-cleanup.ts",
"bunny:cleanup-orphans:dry": "bun run scripts/bunny-orphan-cleanup.ts --dry-run",
"bunny:cleanup-orphans": "bun run scripts/bunny-orphan-cleanup.ts"
},
"dependencies": {
"@auth/prisma-adapter": "^2.11.1",
"@aws-sdk/client-s3": "3.1054.0",
"@aws-sdk/s3-request-presigner": "3.1054.0",
"@prisma/adapter-pg": "^7.3.0",
"@prisma/client": "^7.3.0",
"bcryptjs": "^3.0.3",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"date-fns": "^4.1.0",
"gsap": "^3.14.2",
"hls.js": "^1.6.15",
"lucide-react": "^0.563.0",
"next": "16.2.6",
"next-auth": "^5.0.0-beta.30",
"next-themes": "^0.4.6",
"nodemailer": "^8.0.5",
"pg": "^8.18.0",
"prisma": "^7.3.0",
"radix-ui": "^1.4.3",
"react": "19.2.3",
"react-dom": "19.2.3",
"react-window": "^2.2.7",
"sharp": "^0.34.5",
"sonner": "^2.0.7",
"stripe": "^20.4.1",
"tailwind-merge": "^3.4.0",
"tus-js-client": "^4.3.1",
"tw-animate-css": "^1.4.0"
},
"devDependencies": {
"@commitlint/cli": "^19.8.1",
"@commitlint/config-conventional": "^19.8.1",
"@tailwindcss/postcss": "^4",
"@types/bcryptjs": "^3.0.0",
"@types/node": "^20",
"@types/nodemailer": "^7.0.9",
"@types/pg": "^8.16.0",
"@types/react": "^19",
"@types/react-dom": "^19",
"eslint": "^9",
"eslint-config-next": "16.1.6",
"eslint-config-prettier": "^10.1.5",
"husky": "^9.1.7",
"lint-staged": "^15.5.1",
"prettier": "^3.5.3",
"shadcn": "^3.8.3",
"tailwindcss": "^4",
"typescript": "^5"
},
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --max-warnings=0 --fix",
"prettier --write"
],
"*.{json,css,md,yml,yaml,mdx}": [
"prettier --write"
]
},
"ignoreScripts": [
"sharp",
"unrs-resolver"
],
"trustedDependencies": [
"sharp",
"unrs-resolver"
]
}