{ "name": "qa-studio", "private": true, "version": "0.0.1", "type": "module", "scripts": { "dev": "vite dev", "build": "prisma generate && vite build", "build:analyze": "prisma generate && ANALYZE=true vite build && node -e \"console.log('Open build-stats.html at the repository root for the bundle treemap.')\"", "preview": "vite preview", "prepare": "svelte-kit sync || echo ''", "postinstall": "prisma generate || echo 'Prisma generate skipped'", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "format": "prettier --write .", "lint": "prettier --check . && eslint .", "test:unit": "vitest", "test": "npm run test:unit -- --run && npm run test:e2e", "test:e2e": "playwright test", "test:e2e:headless": "playwright test --headed=false", "docker:dev": "docker-compose up", "docker:dev:build": "docker-compose up --build", "docker:dev:down": "docker-compose down", "docker:dev:clean": "docker-compose down -v", "docker:prod": "docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d", "docker:prod:build": "docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build", "docker:logs": "docker-compose logs -f web", "docker:logs:all": "docker-compose logs -f", "docker:shell": "docker-compose exec web sh", "docker:restart": "docker-compose restart web", "docker:db:studio": "docker-compose exec web npx prisma studio", "docker:db:migrate": "docker-compose exec web npx prisma migrate dev", "docker:db:reset": "docker-compose exec web npx prisma migrate reset", "docker:db:seed": "docker-compose exec web npx prisma db seed", "docker:db:backup": "docker-compose exec postgres pg_dump -U qastudio qastudio > backup-$(date +%Y%m%d-%H%M%S).sql", "docker:db:restore": "echo 'Usage: docker-compose exec -T postgres psql -U qastudio qastudio < backup-file.sql'" }, "devDependencies": { "@eslint/compat": "^2.1.1", "@eslint/js": "^10.0.1", "@fontsource/fira-mono": "^5.3.0", "@inlang/paraglide-js": "^2.29.1", "@neoconfetti/svelte": "^2.2.2", "@playwright/test": "^1.64.1", "@prisma/client": "^7.10.1", "@qastudio-dev/playwright": "^1.5.0", "@skeletonlabs/skeleton": "^5.0.1", "@skeletonlabs/skeleton-svelte": "^5.0.1", "@sveltejs/adapter-vercel": "^6.3.4", "@sveltejs/kit": "^2.70.3", "@sveltejs/vite-plugin-svelte": "^7.3.1", "@tailwindcss/forms": "^0.5.11", "@tailwindcss/typography": "^0.5.20", "@tailwindcss/vite": "^4.3.3", "@types/adm-zip": "^0.6.0", "@types/bcrypt": "^6.0.0", "@types/node": "^24.19.1", "@types/nodemailer": "^8.0.0", "@types/pg": "^8.23.1", "@types/simple-oauth2": "^5.0.8", "@types/swagger-ui-dist": "^3.30.6", "@vitest/browser": "^5.0.5", "@vitest/browser-playwright": "^5.0.3", "@vitest/coverage-v8": "^5.0.3", "eslint": "^10.13.0", "eslint-config-prettier": "^10.1.8", "eslint-plugin-svelte": "^3.23.1", "globals": "^17.12.0", "mdsvex": "^0.12.8", "playwright": "^1.60.0", "prettier": "^3.9.10", "prettier-plugin-svelte": "^4.1.1", "prettier-plugin-tailwindcss": "^0.8.1", "prisma": "^7.10.1", "rollup-plugin-visualizer": "^7.1.1", "svelte": "^5.57.2", "svelte-check": "^4.7.7", "svelte-meta-tags": "^5.0.3", "tailwindcss": "^4.3.0", "tsx": "^4.23.15", "typescript": "^6.0.3", "typescript-eslint": "^8.72.0", "vite": "^8.3.5", "vitest": "^5.0.3", "vitest-browser-svelte": "^3.1.0" }, "dependencies": { "@asteasolutions/zod-to-openapi": "^9.1.0", "@lucide/svelte": "^1.62.0", "@prisma/adapter-pg": "^7.10.1", "@upstash/ratelimit": "^2.2.0", "@upstash/redis": "^1.40.0", "@vercel/blob": "^2.8.2", "@vercel/functions": "^3.10.4", "adm-zip": "^0.6.1", "bcrypt": "^6.0.0", "botid": "^1.5.11", "dotenv": "^18.0.9", "gray-matter": "^4.0.3", "html5-qrcode": "^2.3.8", "marked": "^18.1.2", "marked-highlight": "^2.2.4", "nanoid": "^6.0.2", "nodemailer": "^10.2.1", "openai": "^7.45.1", "otpauth": "^9.5.2", "pg": "^8.23.0", "shiki": "^4.4.3", "simple-oauth2": "^5.1.0", "stripe": "^23.0.1", "sveltekit-api": "^0.6.1", "swagger-ui-dist": "^5.34.0", "zod": "^4.4.3" }, "overrides": { "@hono/node-server": ">=1.19.13", "cookie": "^0.7.0", "zod": "^4.4.3", "zod-validation-error": "^5.0.0", "sveltekit-api": { "@asteasolutions/zod-to-openapi": "^9.1.0", "zod": "^4.4.3", "zod-validation-error": "^5.0.0" } } }