{ "name": "umami", "version": "3.3.0", "description": "A modern, privacy-focused alternative to Google Analytics.", "author": "Umami Software, Inc. ", "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-openapi build-packages build-app", "start": "next start", "build-docker": "npm-run-all build-db build-tracker build-recorder build-geo build-openapi build-packages 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": "npm-run-all check-tracker build-tracker-script build-tracker-types", "build-tracker-script": "rollup -c rollup.tracker.config.js", "build-tracker-types": "tsc -p tsconfig.tracker.types.json && biome format --write src/tracker/index.d.ts", "check-tracker": "tsc -p tsconfig.tracker.json --noEmit", "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-openapi": "npm-run-all openapi:generate generate:api-client", "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", "openapi:generate": "tsx scripts/generate-openapi.ts", "openapi:contracts": "tsx scripts/generate-openapi-contracts.ts", "openapi:check": "tsx scripts/check-openapi.ts", "generate:api": "npm-run-all openapi:generate generate:api-client", "generate:api-client": "tsx scripts/generate-api-client.ts", "check:api-client": "tsx scripts/generate-api-client.ts --check", "build-packages": "pnpm --filter \"./packages/**\" -r build", "test:packages": "pnpm --filter \"./packages/**\" -r test", "postbuild": "node scripts/postbuild.js", "pretest": "pnpm build-db-client", "test": "vitest run", "test:watch": "vitest", "test:e2e": "playwright test", "test:e2e:ui": "playwright test --ui", "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.23.1", "@dicebear/collection": "^9.4.2", "@dicebear/core": "^9.4.3", "@playwright/test": "^1.62.1", "@prisma/adapter-pg": "^7.9.1", "@prisma/client": "^7.9.1", "@prisma/extension-read-replicas": "^0.5.0", "@svgr/cli": "^8.1.0", "@tanstack/react-query": "^5.102.8", "@umami/api-client": "workspace:*", "@umami/mcp": "workspace:*", "@umami/react-zen": "^0.251.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.10.0", "date-fns": "^4.4.0", "date-fns-tz": "^3.2.0", "debug": "^4.4.3", "detect-browser": "^5.2.0", "dotenv": "^17.4.2", "esbuild": "^0.28.2", "immer": "^11.1.18", "ipaddr.js": "^2.5.0", "is-ci": "^4.1.0", "is-docker": "^4.0.0", "is-localhost-ip": "^3.0.1", "isbot": "^5.2.2", "jsonwebtoken": "^9.0.3", "jszip": "^3.10.1", "kafkajs": "^2.1.0", "lucide-react": "^1.38.0", "maxmind": "^5.0.7", "motion": "^12.43.0", "next": "16.3.4", "next-intl": "4.13.4", "node-fetch": "^3.2.8", "npm-run-all": "^4.1.5", "otplib": "^13.5.0", "papaparse": "^5.5.4", "prisma": "^7.9.1", "prop-types": "^15.8.1", "punycode": "^2.3.1", "qrcode": "^1.5.4", "react": "^19.2.8", "react-dom": "^19.2.8", "react-error-boundary": "^6.1.4", "react-resizable-panels": "^4.12.3", "react-simple-maps": "^3.0.0", "react-window": "^2.3.0", "redis": "^5.12.1", "rrweb": "^2.0.1", "rrweb-player": "2.0.0-alpha.20", "semver": "^7.8.5", "serialize-error": "^13.0.1", "thenby": "^1.4.1", "ua-parser-js": "^2.0.10", "uuid": "^14.0.2", "zod": "^4.4.3", "zustand": "^5.0.14" }, "devDependencies": { "@biomejs/biome": "^2.5.11", "@netlify/plugin-nextjs": "^5.15.13", "@rollup/plugin-commonjs": "^29.0.3", "@rollup/plugin-node-resolve": "^16.0.3", "@rollup/plugin-replace": "^6.0.3", "@rollup/plugin-terser": "^1.0.0", "@rollup/plugin-typescript": "^12.3.0", "@testing-library/jest-dom": "^7.0.1", "@testing-library/react": "^16.3.3", "@testing-library/user-event": "^14.6.6", "@types/jest": "^30.0.0", "@types/node": "^26.4.0", "@types/qrcode": "^1.5.6", "@types/react": "^19.2.18", "@types/react-dom": "^19.2.5", "babel-plugin-react-compiler": "19.1.0-rc.2", "dotenv-cli": "^11.0.0", "jsdom": "^30.0.1", "msw": "^2.15.0", "openapi-typescript": "^7.13.0", "postcss": "^8.5.26", "postcss-flexbugs-fixes": "^5.0.2", "postcss-preset-env": "11.3.2", "rollup": "^4.63.1", "tar": "^7.5.22", "tsup": "^8.5.0", "tsx": "^4.23.13", "typescript": "^6.0.3", "vitest": "^4.1.11", "zod-openapi": "^6.0.2" } }