{ "name": "open-reception", "private": true, "version": "0.0.2", "type": "module", "description": "End-to-end encrypted appointment booking platform", "scripts": { "dev": "vite dev", "build": "vite build", "preview": "vite preview", "prepare": "svelte-kit sync && npm run i18n:compile || echo ''", "check": "npm run prepare && svelte-check --tsconfig ./tsconfig.json", "check:watch": "npm run prepare && 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", "db:push": "drizzle-kit push", "db:migrate": "drizzle-kit migrate", "db:studio": "drizzle-kit studio", "db:generate": "drizzle-kit generate", "db:tenant:generate": "drizzle-kit generate --config=drizzle.tenant.config.ts", "db:drop": "docker volume ls -q | grep '^open-reception_' | xargs -r docker volume rm", "docker:dev:up": "docker compose -f docker-compose.dev.yml up -d", "docker:dev:down": "docker compose -f docker-compose.dev.yml down", "docker:dev:logs": "docker compose -f docker-compose.dev.yml logs -f", "docker:dev:clean": "docker compose -f docker-compose.dev.yml down -v --remove-orphans", "docker:build": "docker buildx build --platform linux/amd64,linux/arm64 -t openreception/open-reception:latest .", "docker:build:tag": "docker tag openreception/open-reception:latest openreception/open-reception:$npm_package_version", "docker:push": "docker push openreception/open-reception:$npm_package_version && docker push openreception/open-reception:latest", "docker:build-and-push": "npm run docker:build && npm run docker:build:tag && npm run docker:push", "docker:prod:up": "docker compose -f docker-compose.prod.yml up -d", "docker:prod:down": "docker compose -f docker-compose.prod.yml down", "docker:prod:logs": "docker compose -f docker-compose.prod.yml logs -f", "docker:prod:clean": "docker compose -f docker-compose.prod.yml down -v --remove-orphans", "i18n:compile": "npx @inlang/paraglide-js compile --project ./project.inlang --outdir ./src/i18n", "db:clean": "npm run docker:dev:down && npm run db:drop && npm run docker:dev:up" }, "devDependencies": { "@eslint/compat": "^2.0.1", "@eslint/js": "^9.39.2", "@inlang/paraglide-js": "2.15.0", "@internationalized/date": "^3.10.1", "@lucide/svelte": "^0.562.0", "@playwright/test": "^1.57.0", "@sveltejs/adapter-auto": "^7.0.0", "@sveltejs/kit": "^2.57.1", "@sveltejs/vite-plugin-svelte": "^6.2.4", "@tailwindcss/typography": "^0.5.19", "@tailwindcss/vite": "^4.1.18", "@testing-library/jest-dom": "^6.9.1", "@testing-library/svelte": "^5.3.1", "@types/dotenv": "^6.1.1", "@types/node": "^24", "@types/nodemailer": "^6.4.17", "bits-ui": "^2.15.4", "clsx": "^2.1.1", "drizzle-kit": "^0.31.1", "eslint": "^9.29.0", "eslint-config-prettier": "^10.1.5", "eslint-plugin-svelte": "^3.14.0", "formsnap": "^2.0.1", "globals": "^16.2.0", "jsdom": "^26.1.0", "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.4.1", "prettier-plugin-tailwindcss": "^0.7.2", "svelte": "^5.53.6", "svelte-check": "^4.3.5", "svelte-sonner": "^1.0.7", "sveltekit-superforms": "^2.29.1", "tailwind-merge": "^3.3.1", "tailwind-variants": "^3.1.1", "tailwindcss": "^4.1.10", "tw-animate-css": "^1.3.4", "typescript": "^5.8.3", "typescript-eslint": "^8.34.1", "vaul-svelte": "^1.0.0-next.7", "vite": "^6.4.2", "vitest": "^3.2.4" }, "dependencies": { "@noble/hashes": "^1.8.0", "@noble/post-quantum": "^0.4.1", "@simplewebauthn/server": "^11.0.0", "@sveltejs/adapter-node": "^5.5.1", "argon2": "^0.43.0", "argon2-browser": "^1.18.0", "cropperjs": "^2.0.1", "date-fns": "^4.1.0", "dotenv": "^16.5.0", "dotenv-expand": "^12.0.2", "drizzle-orm": "^0.45.2", "jose": "^6.0.11", "mode-watcher": "^1.0.8", "nodemailer": "^8.0.5", "postgres": "^3.4.7", "secrets.js-34r7h": "^2.0.2", "uuidv7": "^1.0.2", "winston": "^3.17.0", "zod": "^4.1.12" }, "license": "AGPL-3.0" }