{ "name": "open-reception", "private": true, "version": "0.0.1", "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", "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 build -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" }, "devDependencies": { "@eslint/compat": "^1.3.0", "@eslint/js": "^9.29.0", "@inlang/paraglide-js": "2.2.0", "@internationalized/date": "^3.8.2", "@lucide/svelte": "^0.542.0", "@playwright/test": "^1.53.1", "@sveltejs/adapter-auto": "^6.1.0", "@sveltejs/kit": "^2.22.0", "@sveltejs/vite-plugin-svelte": "^5.1.0", "@tailwindcss/typography": "^0.5.16", "@tailwindcss/vite": "^4.1.10", "@testing-library/jest-dom": "^6.6.3", "@testing-library/svelte": "^5.2.8", "@types/dotenv": "^6.1.1", "@types/node": "^24", "@types/nodemailer": "^6.4.17", "bits-ui": "^2.8.13", "clsx": "^2.1.1", "drizzle-kit": "^0.31.1", "eslint": "^9.29.0", "eslint-config-prettier": "^10.1.5", "eslint-plugin-svelte": "^3.9.3", "formsnap": "^2.0.1", "globals": "^16.2.0", "jsdom": "^26.1.0", "prettier": "^3.5.3", "prettier-plugin-svelte": "^3.4.0", "prettier-plugin-tailwindcss": "^0.6.13", "svelte": "^5.34.7", "svelte-check": "^4.2.2", "svelte-sonner": "^1.0.5", "sveltekit-superforms": "^2.27.1", "tailwind-merge": "^3.3.1", "tailwind-variants": "^1.0.0", "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.3.5", "vitest": "^3.2.4" }, "dependencies": { "@noble/hashes": "^1.8.0", "@noble/post-quantum": "^0.4.1", "@sveltejs/adapter-node": "^5.2.12", "argon2": "^0.43.0", "argon2-browser": "^1.18.0", "date-fns": "^4.1.0", "dotenv": "^16.5.0", "dotenv-expand": "^12.0.2", "drizzle-orm": "^0.44.2", "jose": "^6.0.11", "mode-watcher": "^1.0.8", "nodemailer": "^7.0.3", "postgres": "^3.4.7", "secrets.js-34r7h": "^2.0.2", "uuidv7": "^1.0.2", "winston": "^3.17.0", "zod": "^3.25.76" }, "license": "AGPL-3.0" }