package.json
Rama main · réplica de lectura del repositorio original.
{
"name": "realmroot",
"version": "1.0.1",
"private": true,
"license": "AGPL-3.0-only",
"type": "module",
"scripts": {
"dev": "vite dev",
"build": "pnpm run build:skills && vite build",
"build:skills": "node scripts/build-agent-skills.mjs",
"check:skills": "node scripts/build-agent-skills.mjs --check",
"deploy": "pnpm run db:migrate:remote && pnpm run build && wrangler deploy --config dist/realmroot/wrangler.json",
"deploy:check": "node scripts/check-cloudflare-config.mjs",
"deploy:fork": "node scripts/deploy-cloudflare-fork.mjs",
"deploy:self": "pnpm run deploy",
"deploy:prod": "pnpm run deploy",
"bootstrap:admin": "node scripts/bootstrap-admin.mjs",
"db:generate": "drizzle-kit generate",
"db:migrate": "wrangler d1 migrations apply DB --local",
"db:migrate:e2e": "wrangler d1 migrations apply realmroot-db-e2e --local --config e2e/wrangler.toml --persist-to e2e/.wrangler/state",
"db:migrate:remote": "wrangler d1 migrations apply DB --remote",
"db:migrate:prod": "pnpm run db:migrate:remote",
"routes:generate": "tsr generate",
"typecheck": "pnpm run routes:generate && tsc --noEmit -p config/tsconfig.server.json && tsc --noEmit -p config/tsconfig.web.json && tsc --noEmit -p config/tsconfig.vitest.json && tsc --noEmit -p config/tsconfig.integration.json && tsc --noEmit -p config/tsconfig.e2e.json",
"test": "vitest run",
"test:unit": "vitest run --project unit",
"test:web": "vitest run --project web",
"test:backend": "vitest run --project unit --project integration",
"test:integration": "vitest run --project integration",
"test:coverage": "vitest run --project unit --project web --coverage",
"test:coverage:backend": "vitest run --project unit --coverage --coverage.include='server/domain/**' --coverage.include='server/usecases/**' --coverage.include='server/adapters/gateways/**' --coverage.include='shared/api/**'",
"test:coverage:web": "vitest run --project web --coverage --coverage.include='src/features/**' --coverage.include='src/lib/**'",
"spec:check": "node scripts/verify-specs.mjs",
"e2e": "playwright test",
"pvt": "node scripts/run-pvt.mjs",
"example:resource-external": "tsx examples/external-resource-server/server.ts",
"example:resource-native": "tsx examples/native-resource-server/server.ts",
"test:e2e": "pnpm run spec:check && playwright test",
"test:watch": "vitest",
"lint": "biome check .",
"lint:arch": "node scripts/verify-frontend-boundary.mjs && depcruise 'server/**/*.ts' 'shared/**/*.ts' --config .dependency-cruiser.cjs",
"lint:fix": "biome check --write .",
"format": "biome format --write .",
"prepare": "husky",
"cf-typegen": "wrangler types server/worker-configuration.d.ts --include-runtime=false --env-file .dev.vars.example",
"postinstall": "wrangler types server/worker-configuration.d.ts --include-runtime=false --env-file .dev.vars.example"
},
"engines": {
"node": ">=24"
},
"packageManager": "pnpm@10.30.2",
"dependencies": {
"@better-auth/agent-auth": "0.6.2",
"@better-auth/i18n": "1.7.5",
"@better-auth/oauth-provider": "1.7.5",
"@better-auth/passkey": "1.7.5",
"@fontsource-variable/geist": "^5.2.8",
"@fontsource-variable/inter": "^5.3.0",
"@hono/zod-openapi": "^1.4.0",
"@hono/zod-validator": "^0.8.0",
"@noble/hashes": "^2.0.1",
"@scalar/hono-api-reference": "0.11.12",
"@tanstack/react-query": "^5.100.9",
"@tanstack/react-router": "^1.93.0",
"better-auth": "1.7.5",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"drizzle-orm": "^0.45.2",
"express": "5.2.1",
"hono": "^4.12.18",
"i18next": "^26.4.0",
"jose": "6.2.4",
"lucide-react": "^1.14.0",
"qrcode": "^1.5.4",
"radix-ui": "^1.4.3",
"react": "^19.2.5",
"react-dom": "^19.2.5",
"react-i18next": "^17.0.12",
"shadcn": "^4.7.0",
"simple-icons": "16.28.0",
"sonner": "^2.0.7",
"tailwind-merge": "^3.6.0",
"tw-animate-css": "^1.4.0",
"uuid": "^14.0.1",
"viem": "^2.48.11",
"yaml": "^2.8.4",
"zod": "^4.4.3"
},
"devDependencies": {
"@biomejs/biome": "^2.4.10",
"@cloudflare/vite-plugin": "^1.36.3",
"@cloudflare/vitest-pool-workers": "^0.22.0",
"@cloudflare/workers-types": "5.20260830.1",
"@playwright/test": "^1.59.1",
"@swc/core": "^1.16.1",
"@tailwindcss/vite": "^4.2.2",
"@tanstack/router-cli": "^1.167.5",
"@tanstack/router-plugin": "^1.168.6",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
"@types/express": "5.0.6",
"@types/node": "^25.9.0",
"@types/qrcode": "^1.5.6",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^6.0.1",
"@vitest/coverage-v8": "^4.1.2",
"dependency-cruiser": "^17.4.3",
"drizzle-kit": "^0.31.10",
"husky": "^9.1.7",
"jsdom": "^29.0.2",
"lint-staged": "^17.0.4",
"msw": "2.14.6",
"tailwindcss": "^4.2.4",
"tsx": "^4.22.2",
"typescript": "^7.0.2",
"vite": "^8.0.11",
"vitest": "^4.1.2",
"wrangler": "^4.127.1"
},
"cloudflare": {
"bindings": {
"BETTER_AUTH_SECRET": {
"description": "Signing secret for auth sessions. Generate with: `openssl rand -base64 32`"
},
"CREDENTIAL_ENCRYPTION_KEY": {
"description": "Master secret for AES-GCM encryption of Connector and external API resource credentials"
},
"DB": {
"description": "D1 database for Realmroot identity data"
},
"ASSET_BUCKET": {
"description": "R2 bucket for uploaded avatars, organization logos, and application logos"
},
"EMAIL": {
"description": "Cloudflare Email Routing send_email binding"
}
}
},
"lint-staged": {
"*.{ts,tsx,js,jsx,json,jsonc}": "biome check --write --no-errors-on-unmatched"
},
"volta": {
"node": "24.14.1",
"pnpm": "10.30.2"
},
"overrides": {
"esbuild": "^0.27.3"
},
"pnpm": {
"onlyBuiltDependencies": [
"@swc/core",
"esbuild",
"msw",
"sharp",
"workerd"
],
"patchedDependencies": {
"@better-auth/agent-auth@0.6.2": "patches/@better-auth__agent-auth@0.6.2.patch",
"@better-auth/oauth-provider@1.7.5": "patches/@better-auth__oauth-provider@1.7.5.patch",
"better-auth@1.7.5": "patches/better-auth@1.7.5.patch"
}
}
}