{ "name": "jam", "version": "0.1.0", "private": true, "description": "Your sats. Your privacy. Your profit.", "repository": "git@github.com:joinmarket-webui/jam.git", "license": "MIT", "type": "module", "engines": { "node": ">=24.11.1", "npm": ">=11.6.2" }, "scripts": { "dev": "VITE_JAM_DEV_MODE=true vite", "dev:secondary": "JAM_BACKEND=jam-standalone JAM_API_PORT=29080 npm run dev", "build": "tsc -b && vite build", "lint": "eslint .", "prettier": "prettier --write \"**/*.{js,jsx,ts,tsx,json,css,md}\"", "format": "npm run lint -- --fix && npm run prettier", "preview": "vite preview", "storybook": "storybook dev -p 6006", "build-storybook": "storybook build", "test": "vitest run", "test:unit": "vitest run --project unit", "test:storybook": "vitest run --project storybook", "check": "npm run format && npm run test && npm run build", "regtest:build": "npm run regtest:clear && docker compose --env-file docker/regtest/.env.example --file docker/regtest/docker-compose.yml build --pull", "regtest:rebuild": "rm -rf docker/regtest/.tmp && npm run regtest:build -- --no-cache", "regtest:clear": "docker compose --env-file docker/regtest/.env.example --file docker/regtest/docker-compose.yml down --volumes --remove-orphans", "regtest:up": "./docker/regtest/prepare-setup.sh && docker compose --env-file docker/regtest/.env.generated --file docker/regtest/docker-compose.yml up --detach --wait --wait-timeout 120", "regtest:logs": "docker compose --env-file docker/regtest/.env.example --file docker/regtest/docker-compose.yml logs --follow", "regtest:down": "docker compose --env-file docker/regtest/.env.example --file docker/regtest/docker-compose.yml down", "regtest:logs:jmwalletd": "docker exec -t jm_regtest_joinmarket tail -f /var/log/jam/jmwalletd_stdout.log", "regtest:logs:schedule": "docker exec -t jm_regtest_joinmarket tail -f /root/.joinmarket/logs/TUMBLE.schedule", "regtest:logs:directory_node": "docker exec -t jm_regtest_joinmarket_directory_node tail -f /var/log/jam/directory_node_stdout.log -n 200", "regtest:init": "./docker/regtest/init-setup.sh", "regtest:mine": "watch -n 11 ./docker/regtest/mine-block.sh" }, "lint-staged": { "*.{js,jsx,ts,tsx}": [ "eslint --fix", "prettier --write" ], "*.{json,css,md}": "prettier --write" }, "dependencies": { "@joinmarket-webui/joinmarket-api-ts": "0.3.0", "@noble/hashes": "2.0.1", "@radix-ui/react-accordion": "1.2.12", "@radix-ui/react-avatar": "1.1.11", "@radix-ui/react-dialog": "1.1.15", "@radix-ui/react-label": "2.1.8", "@radix-ui/react-select": "2.2.6", "@radix-ui/react-separator": "1.1.8", "@radix-ui/react-slot": "1.2.4", "@radix-ui/react-tooltip": "1.2.8", "@tailwindcss/vite": "4.1.18", "@tanstack/react-query": "5.90.16", "@tanstack/react-table": "8.21.3", "class-variance-authority": "0.7.1", "clsx": "2.1.1", "i18next-browser-languagedetector": "8.2.0", "lucide-react": "0.554.0", "next-themes": "0.4.6", "qrcode": "1.5.4", "react": "19.2.0", "react-dom": "19.2.0", "react-i18next": "16.3.5", "react-router-dom": "7.9.6", "sonner": "2.0.7", "tailwind-merge": "3.4.0", "tailwindcss": "4.1.18", "tw-animate-css": "1.4.0", "zustand": "5.0.9" }, "devDependencies": { "@chromatic-com/storybook": "4.1.3", "@eslint/js": "9.39.1", "@playwright/test": "1.56.1", "@storybook/addon-a11y": "10.1.11", "@storybook/addon-docs": "10.1.11", "@storybook/addon-vitest": "10.1.11", "@storybook/react-vite": "10.1.11", "@trivago/prettier-plugin-sort-imports": "6.0.0", "@types/node": "24.10.1", "@types/qrcode": "1.5.6", "@types/react": "19.2.6", "@types/react-dom": "19.2.3", "@vitejs/plugin-react": "5.1.1", "@vitest/browser": "4.0.9", "@vitest/browser-playwright": "4.0.9", "@vitest/coverage-v8": "4.0.9", "conventional-changelog": "7.1.1", "eslint": "9.39.1", "eslint-plugin-react-hooks": "7.0.1", "eslint-plugin-react-refresh": "0.4.24", "eslint-plugin-storybook": "10.0.8", "globals": "16.5.0", "husky": "9.1.7", "lint-staged": "16.2.7", "prettier": "3.6.2", "prettier-plugin-tailwindcss": "0.7.1", "storybook": "10.1.11", "typescript": "~5.9.3", "typescript-eslint": "8.47.0", "vite": "7.2.4", "vitest": "4.0.9" }, "overrides": { "storybook": "$storybook", "@joinmarket-webui/joinmarket-api-ts": { "@tanstack/react-query": "$@tanstack/react-query" } } }