{
  "name": "umami",
  "version": "3.1.0",
  "description": "A modern, privacy-focused alternative to Google Analytics.",
  "author": "Umami Software, Inc. <hello@umami.is>",
  "license": "MIT",
  "homepage": "https://umami.is",
  "repository": {
    "type": "git",
    "url": "https://github.com/umami-software/umami.git"
  },
  "type": "module",
  "scripts": {
    "dev": "dotenv next dev --turbo",
    "build": "npm-run-all check-env build-db check-db build-tracker build-recorder build-geo build-app",
    "start": "next start",
    "build-docker": "npm-run-all build-db build-tracker build-recorder build-geo build-app",
    "start-docker": "npm-run-all check-db update-tracker start-server",
    "start-env": "node scripts/start-env.js",
    "start-server": "node server.js",
    "build-app": "next build --turbo",
    "build-icons": "svgr ./src/assets --out-dir src/components/svg --typescript",
    "build-components": "node scripts/bump-components.js && tsup",
    "build-tracker": "rollup -c rollup.tracker.config.js",
    "build-recorder": "rollup -c rollup.recorder.config.js",
    "build-prisma-client": "node scripts/build-prisma-client.js",
    "build-lang": "npm-run-all download-country-names download-language-names",
    "build-geo": "node scripts/build-geo.js",
    "build-db": "npm-run-all build-db-client build-prisma-client",
    "build-db-schema": "prisma db pull",
    "build-db-client": "prisma generate",
    "update-tracker": "node scripts/update-tracker.js",
    "update-db": "prisma migrate deploy",
    "check-db": "node scripts/check-db.js",
    "check-env": "node scripts/check-env.js",
    "check-missing-messages": "node scripts/check-missing-messages.js",
    "copy-db-files": "node scripts/copy-db-files.js",
    "download-country-names": "node scripts/download-country-names.js",
    "download-language-names": "node scripts/download-language-names.js",
    "change-password": "node scripts/change-password.js",
    "postbuild": "node scripts/postbuild.js",
    "test": "jest",
    "cypress-open": "cypress open cypress run",
    "cypress-run": "cypress run cypress run",
    "seed-data": "tsx scripts/seed-data.ts",
    "lint": "biome lint .",
    "format": "biome format --write .",
    "check": "biome check --write"
  },
  "cacheDirectories": [
    ".next/cache"
  ],
  "dependencies": {
    "@clickhouse/client": "^1.18.2",
    "@date-fns/utc": "^1.2.0",
    "@dicebear/collection": "^9.4.2",
    "@dicebear/core": "^9.4.2",
    "@hello-pangea/dnd": "^17.0.0",
    "@prisma/adapter-pg": "^7.6.0",
    "@prisma/client": "^7.6.0",
    "@prisma/extension-read-replicas": "^0.5.0",
    "@react-spring/web": "^10.0.3",
    "@svgr/cli": "^8.1.0",
    "@tanstack/react-query": "^5.96.0",
    "@umami/react-zen": "^0.245.0",
    "bcryptjs": "^3.0.2",
    "chalk": "^5.6.2",
    "chart.js": "^4.5.1",
    "chartjs-adapter-date-fns": "^3.0.0",
    "classnames": "^2.3.1",
    "colord": "^2.9.2",
    "cors": "^2.8.6",
    "cross-spawn": "^7.0.3",
    "date-fns": "^2.23.0",
    "date-fns-tz": "^1.1.4",
    "debug": "^4.4.3",
    "del": "^6.0.0",
    "detect-browser": "^5.2.0",
    "dotenv": "^17.3.1",
    "esbuild": "^0.27.4",
    "immer": "^11.1.4",
    "ipaddr.js": "^2.3.0",
    "is-ci": "^3.0.1",
    "is-docker": "^3.0.0",
    "is-localhost-ip": "^2.0.0",
    "isbot": "^5.1.37",
    "jsonwebtoken": "^9.0.3",
    "jszip": "^3.10.1",
    "kafkajs": "^2.1.0",
    "lucide-react": "^1.7.0",
    "maxmind": "^5.0.5",
    "next": "16.2.4",
    "next-intl": "4.8.3",
    "node-fetch": "^3.2.8",
    "npm-run-all": "^4.1.5",
    "papaparse": "^5.5.3",
    "pg": "^8.20.0",
    "prisma": "^7.6.0",
    "pure-rand": "^7.0.1",
    "react": "^19.2.5",
    "react-dom": "^19.2.5",
    "react-error-boundary": "^4.0.4",
    "react-resizable-panels": "^4.8.0",
    "react-simple-maps": "^2.3.0",
    "react-use-measure": "^2.0.4",
    "react-window": "^1.8.6",
    "redis": "^4.5.1",
    "request-ip": "^3.3.0",
    "rrweb": "2.0.0-alpha.4",
    "rrweb-player": "1.0.0-alpha.4",
    "semver": "^7.7.4",
    "serialize-error": "^12.0.0",
    "thenby": "^1.3.4",
    "ua-parser-js": "^2.0.9",
    "uuid": "^13.0.0",
    "zod": "^4.3.6",
    "zustand": "^5.0.12"
  },
  "devDependencies": {
    "@biomejs/biome": "^2.4.10",
    "@netlify/plugin-nextjs": "^5.15.9",
    "@rollup/plugin-alias": "^5.0.0",
    "@rollup/plugin-commonjs": "^25.0.4",
    "@rollup/plugin-json": "^6.0.0",
    "@rollup/plugin-node-resolve": "^15.2.0",
    "@rollup/plugin-replace": "^5.0.2",
    "@rollup/plugin-terser": "^0.4.4",
    "@rollup/plugin-typescript": "^12.3.0",
    "@types/jest": "^30.0.0",
    "@types/node": "^24.12.0",
    "@types/react": "^19.2.14",
    "@types/react-dom": "^19.2.2",
    "babel-plugin-react-compiler": "19.1.0-rc.2",
    "cross-env": "^10.1.0",
    "cypress": "^13.6.6",
    "dotenv-cli": "^11.0.0",
    "jest": "^29.7.0",
    "postcss": "^8.5.8",
    "postcss-flexbugs-fixes": "^5.0.2",
    "postcss-import": "^15.1.0",
    "postcss-preset-env": "7.8.3",
    "prompts": "2.4.2",
    "rollup": "^4.60.1",
    "rollup-plugin-copy": "^3.4.0",
    "rollup-plugin-delete": "^3.0.2",
    "rollup-plugin-dts": "^6.4.1",
    "rollup-plugin-node-externals": "^8.1.1",
    "rollup-plugin-peer-deps-external": "^2.2.4",
    "rollup-plugin-postcss": "^4.0.2",
    "tar": "^7.5.13",
    "ts-jest": "^29.4.6",
    "ts-morph": "^27.0.2",
    "ts-node": "^10.9.1",
    "tsup": "^8.5.0",
    "tsx": "^4.19.0",
    "typescript": "^5.9.3"
  }
}
