{ "name": "snapotter", "version": "1.17.2", "private": true, "description": "Self-hosted image processing suite with 50+ tools and local AI. Single Docker container, no external services.", "homepage": "https://snapotter.com", "repository": { "type": "git", "url": "https://github.com/snapotter-hq/snapotter.git" }, "keywords": [ "image-processing", "self-hosted", "docker", "ai", "background-removal", "image-resize", "image-compression", "ocr", "open-source" ], "packageManager": "pnpm@9.15.4", "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", "build": "turbo build", "lint": "turbo lint", "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:coverage": "vitest run --coverage", "test:ci": "vitest run --coverage --reporter=verbose", "test:all": "vitest run --coverage && playwright test", "test:e2e": "playwright test", "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:docker": "docker compose -f docker/docker-compose.test.yml up --build --abort-on-container-exit", "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": { "@biomejs/biome": "^2.4.16", "@playwright/test": "^1.60.0", "@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.8", "@semantic-release/npm": "^13.1.5", "@semantic-release/release-notes-generator": "^14.1.1", "@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", "@vitest/coverage-v8": "^3.2.6", "adm-zip": "^0.5.17", "husky": "^9.1.7", "jsdom": "^29.1.1", "lint-staged": "^16.4.0", "semantic-release": "^25.0.3", "turbo": "^2.9.16", "typescript": "^5.7.0", "vitest": "^3.2.6" }, "license": "AGPL-3.0", "pnpm": { "overrides": { "fast-uri": ">=3.1.2", "handlebars": ">=4.7.9", "picomatch": ">=4.0.4", "lodash": ">=4.18.0", "lodash-es": ">=4.18.0", "brace-expansion>minimatch": "^2.0.2", "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", "@fastify/static": ">=9.1.3" } }, "dependencies": { "@dnd-kit/core": "^6.3.1", "@dnd-kit/sortable": "^10.0.0", "@dnd-kit/utilities": "^3.2.2" } }