{ "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", "test": "vitest run --project unit --project component", "test:watch": "vitest --project unit --project component", "test:api": "vitest run --project api", "test:e2e": "playwright test", "test:all": "bun run test && bun run test:api && bun run test:e2e", "test:coverage": "vitest run --project unit --coverage", "test:mutation": "node node_modules/@stryker-mutator/core/bin/stryker.js run", "verify": "bun run check && bun run test", "test:db:up": "podman compose -f docker-compose.test.yml up -d --wait postgres-test", "test:db:down": "podman compose -f docker-compose.test.yml down -v", "test:db:bootstrap": "bun run tests/setup/db-bootstrap.ts", "prepare": "husky || true", "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.11", "next-auth": "^5.0.0-beta.30", "next-themes": "^0.4.6", "nodemailer": "^9.0.1", "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.35.3", "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", "@playwright/test": "1.61.1", "@stryker-mutator/core": "^9.6.1", "@stryker-mutator/vitest-runner": "^9.6.1", "@tailwindcss/postcss": "^4", "@testing-library/jest-dom": "^7.0.0", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", "@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", "@vitejs/plugin-react": "^6.0.4", "@vitest/coverage-v8": "^4.1.10", "eslint": "^9", "eslint-config-next": "16.1.6", "eslint-config-prettier": "^10.1.5", "husky": "^9.1.7", "jsdom": "^29.1.1", "lint-staged": "^15.5.1", "prettier": "^3.5.3", "shadcn": "^3.8.3", "tailwindcss": "^4", "typescript": "^5", "vitest": "^4.1.10" }, "lint-staged": { "*.{js,jsx,ts,tsx}": [ "eslint --max-warnings=0 --fix", "prettier --write" ], "*.{json,css,md,yml,yaml,mdx}": [ "prettier --write" ] }, "overrides": { "sharp": "^0.35.3" }, "ignoreScripts": [ "sharp", "unrs-resolver" ], "trustedDependencies": [ "sharp", "unrs-resolver" ] }