{ "name": "runtipi", "version": "2.1.0", "description": "A homeserver for everyone", "scripts": { "knip": "knip", "prepare": "mkdir -p state && echo \"{}\" > state/system-info.json && echo \"random-seed\" > state/seed", "test": "dotenv -e .env.test -- jest --colors", "test:e2e": "NODE_ENV=test dotenv -e .env -e .env.e2e -- playwright test", "test:e2e:ui": "NODE_ENV=test dotenv -e .env -e .env.e2e -- playwright test --ui", "test:client": "jest --colors --selectProjects client --", "test:server": "jest --colors --selectProjects server --", "test:vite": "dotenv -e .env.test -- vitest run --coverage", "dev": "npm run db:migrate && next dev", "dev:watcher": "pnpm -r --filter cli dev", "db:migrate": "NODE_ENV=development dotenv -e .env.local -- tsx ./src/server/run-migrations-dev.ts", "lint": "next lint", "lint:fix": "next lint --fix", "build": "next build", "start": "NODE_ENV=production node server.js", "start:dev-container": "./.devcontainer/filewatcher.sh && npm run start:dev", "start:rc": "docker compose -f docker-compose.rc.yml --env-file .env up --build", "start:dev": "npm run prepare && docker compose -f docker-compose.dev.yml up --build", "start:prod": "npm run prepare && docker compose --env-file ./.env -f docker-compose.prod.yml up --build", "start:pg": "docker run --name test-db -p 5433:5432 -d --rm -e POSTGRES_PASSWORD=postgres postgres:14", "version": "echo $npm_package_version", "release:rc": "./scripts/deploy/release-rc.sh", "test:build": "docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t meienberger/runtipi:test .", "test:build:arm64": "docker buildx build --platform linux/arm64 -t meienberger/runtipi:test .", "test:build:arm7": "docker buildx build --platform linux/arm/v7 -t meienberger/runtipi:test .", "test:build:amd64": "docker buildx build --platform linux/amd64 -t meienberger/runtipi:test .", "tsc": "tsc" }, "dependencies": { "@hookform/resolvers": "^3.3.2", "@otplib/core": "^12.0.1", "@otplib/plugin-crypto": "^12.0.1", "@otplib/plugin-thirty-two": "^12.0.1", "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-dropdown-menu": "^2.0.6", "@radix-ui/react-scroll-area": "^1.0.5", "@radix-ui/react-select": "^2.0.0", "@radix-ui/react-switch": "^1.0.3", "@radix-ui/react-tabs": "^1.0.4", "@runtipi/postgres-migrations": "^5.3.0", "@runtipi/shared": "workspace:^", "@tabler/core": "1.0.0-beta20", "@tabler/icons-react": "^2.40.0", "argon2": "^0.31.1", "bullmq": "^4.13.0", "clsx": "^2.0.0", "connect-redis": "^7.1.0", "drizzle-orm": "^0.28.6", "fs-extra": "^11.1.1", "lodash.merge": "^4.6.2", "next": "14.0.1", "next-client-cookies": "^1.0.6", "next-intl": "^2.22.1", "next-safe-action": "^5.0.2", "pg": "^8.11.3", "qrcode.react": "^3.1.0", "react": "18.2.0", "react-dom": "18.2.0", "react-hook-form": "^7.48.2", "react-hot-toast": "^2.4.1", "react-markdown": "^9.0.0", "react-select": "^5.8.0", "react-tooltip": "^5.22.0", "redaxios": "^0.5.1", "redis": "^4.6.10", "rehype-raw": "^7.0.0", "remark-breaks": "^4.0.0", "remark-gfm": "^4.0.0", "sass": "^1.69.5", "semver": "^7.5.4", "sharp": "0.32.6", "swr": "^2.2.4", "tslib": "^2.6.2", "uuid": "^9.0.1", "validator": "^13.11.0", "winston": "^3.11.0", "zod": "^3.22.4", "zustand": "^4.4.6" }, "devDependencies": { "@babel/core": "^7.23.2", "@faker-js/faker": "^8.2.0", "@playwright/test": "^1.39.0", "@testing-library/dom": "^9.3.3", "@testing-library/jest-dom": "^6.1.4", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.5.1", "@total-typescript/shoehorn": "^0.1.1", "@total-typescript/ts-reset": "^0.5.1", "@types/fs-extra": "^11.0.3", "@types/jest": "^29.5.7", "@types/lodash.merge": "^4.6.8", "@types/node": "20.8.10", "@types/pg": "^8.10.7", "@types/react": "18.2.34", "@types/react-dom": "18.2.14", "@types/semver": "^7.5.4", "@types/uuid": "^9.0.6", "@types/validator": "^13.11.5", "@typescript-eslint/eslint-plugin": "^6.9.1", "@typescript-eslint/parser": "^6.10.0", "@vitejs/plugin-react": "^4.1.1", "@vitest/coverage-v8": "^0.34.6", "dotenv-cli": "^7.3.0", "eslint": "8.52.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb-typescript": "^17.1.0", "eslint-config-next": "14.0.1", "eslint-config-prettier": "^9.0.0", "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.29.0", "eslint-plugin-jest": "^27.6.0", "eslint-plugin-jest-dom": "^5.1.0", "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-testing-library": "^6.1.0", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "knip": "^2.39.0", "memfs": "^4.6.0", "msw": "^1.3.2", "next-router-mock": "^0.9.10", "prettier": "^3.0.3", "ts-jest": "^29.1.1", "ts-node": "^10.9.1", "tsx": "^3.14.0", "typescript": "5.2.2", "vite-tsconfig-paths": "^4.2.1", "vitest": "^0.34.6", "wait-for-expect": "^3.0.2" }, "msw": { "workerDirectory": "public" }, "repository": { "type": "git", "url": "git+https://github.com/runtipi/runtipi.git" }, "author": "", "license": "GNU General Public License v3.0", "bugs": { "url": "https://github.com/runtipi/runtipi/issues" }, "homepage": "https://github.com/runtipi/runtipi#readme", "pnpm": { "patchedDependencies": {} } }