{ "name": "snapotter", "version": "2.2.0", "private": true, "description": "Open-source, self-hosted file-processing infrastructure with 200+ tools across image, video, audio, PDF, and documents, plus local AI. Runs as a Docker Compose stack with Postgres and Redis.", "homepage": "https://snapotter.com", "repository": { "type": "git", "url": "https://github.com/snapotter-hq/snapotter.git" }, "keywords": [ "file-processing", "image-processing", "video-processing", "audio-processing", "pdf-tools", "document-conversion", "file-tools", "self-hosted", "docker", "ai", "background-removal", "ocr", "transcription", "open-source" ], "packageManager": "pnpm@9.15.4", "engines": { "node": ">=22.22.0" }, "scripts": { "dev": "turbo dev & (cd .local-wiki && npm run docs:dev) &", "wiki:dev": "cd .local-wiki && npm run docs:dev", "docs:dev": "pnpm --filter @snapotter/docs docs:dev", "i18n:translate": "apps/api/node_modules/.bin/tsx scripts/i18n/translate.mjs", "i18n:check": "apps/api/node_modules/.bin/tsx scripts/i18n/check-parity.mjs", "build": "turbo build", "lint": "turbo lint && pnpm lint:root", "lint:root": "biome check scripts config docker branding signatures .vscode tests/*.cjs tests/*.mjs tests/*.ts tests/baseline tests/benchmark tests/e2e tests/e2e-analytics tests/e2e-demo tests/e2e-docker tests/e2e-docs tests/e2e-editor tests/e2e-landing tests/e2e-noauth tests/fixtures/gen-manifest.mjs tests/fixtures/gen-synthetic-content.mjs tests/fixtures/index.ts tests/fixtures/manifest.json tests/helpers tests/integration tests/qa tests/setup tests/unit", "lint:fix": "biome check --write .", "clean": "turbo clean", "typecheck": "turbo typecheck", "test": "vitest run", "test:watch": "vitest", "test:unit": "vitest run --config vitest.config.ts tests/unit", "test:integration": "vitest run --config vitest.config.ts tests/integration", "test:fuzz": "node scripts/run-fuzz-gate.mjs", "test:coverage": "vitest run --coverage", "test:ci": "vitest run --coverage --reporter=verbose", "test:all": "vitest run --coverage && pnpm test:e2e", "test:e2e": "node scripts/run-main-e2e.mjs", "test:e2e:core": "node scripts/run-main-e2e.mjs --core", "test:e2e:visual": "playwright test --project=chromium-visual --project=chromium-legacy-visual", "test:e2e:ui": "playwright test --ui", "test:e2e:landing": "playwright test --config playwright.landing.config.ts", "test:e2e:docs": "playwright test --config playwright.docs.config.ts", "test:e2e:analytics": "playwright test --config playwright.analytics-local.config.ts", "test:e2e:noauth": "playwright test --config playwright.noauth.config.ts", "test:e2e:docker": "playwright test --config playwright.analytics.config.ts", "test:e2e:production": "playwright test --config tests/qa/playwright.qa.config.ts", "test:docker": "docker compose -f docker/docker-compose.test.yml up --build --abort-on-container-exit", "check:license-boundary": "node scripts/check-license-boundary.mjs", "check:production-node-licenses": "node scripts/check-production-licenses.mjs", "check:production-licenses": "pnpm check:production-node-licenses", "version:sync": "./scripts/sync-version.sh", "release": "semantic-release", "release:dry": "semantic-release --dry-run", "prepare": "husky" }, "lint-staged": { "*.{ts,tsx,js,jsx,json}": [ "biome check --write --no-errors-on-unmatched" ] }, "devDependencies": { "@axe-core/playwright": "^4.12.1", "@biomejs/biome": "^2.5.4", "@playwright/test": "^1.61.1", "@semantic-release/changelog": "^6.0.3", "@semantic-release/commit-analyzer": "^13.0.1", "@semantic-release/exec": "^7.1.0", "@semantic-release/git": "^10.0.1", "@semantic-release/github": "^12.0.9", "@semantic-release/npm": "^13.1.5", "@semantic-release/release-notes-generator": "^14.1.1", "@testcontainers/postgresql": "^12.0.4", "@testcontainers/redis": "^12.0.4", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", "@types/adm-zip": "^0.5.8", "@types/js-yaml": "^4.0.9", "@vitest/coverage-v8": "^3.2.6", "adm-zip": "^0.6.0", "fast-check": "^3.23.2", "husky": "^9.1.7", "js-yaml": "^4.3.0", "jsdom": "^29.1.1", "lint-staged": "^16.4.0", "semantic-release": "^25.0.8", "turbo": "^2.10.5", "typescript": "^5.7.0", "vitest": "^3.2.6", "zod": "3.25.76", "zod-fast-check": "^0.10.1" }, "license": "AGPL-3.0", "pnpm": { "overrides": { "fast-uri": ">=4.1.1", "astro>sharp": "0.35.3", "astro>svgo": "4.0.2", "exceljs>unzipper": "0.12.5", "handlebars": ">=4.7.9", "glob": ">=10.5.0", "minimatch": ">=9.0.6", "picomatch": ">=4.0.4", "tar": ">=7.5.21", "lodash": ">=4.18.0", "lodash-es": ">=4.18.0", "brace-expansion>minimatch": "^2.0.2", "brace-expansion@5.0.7": "5.0.8", "phin": ">=3.7.1", "follow-redirects": ">=1.16.0", "protobufjs": ">=7.5.6", "@protobufjs/utf8": ">=1.1.1", "postcss": ">=8.5.10", "vite@<6.4.2": ">=6.4.2", "esbuild@<0.25.12": ">=0.25.12", "@babel/core": "^7.29.6", "@opentelemetry/core": ">=2.8.0", "js-yaml": "^4.2.0", "qs": ">=6.15.2", "uuid": ">=11.1.1", "yaml": ">=2.8.3", "dompurify": ">=3.4.11", "nanoid@4": ">=5.0.9", "find-my-way": "9.7.0" }, "patchedDependencies": { "gray-matter@4.0.3": "patches/gray-matter@4.0.3.patch" } }, "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2" } }