{ "name": "open-safetylog-ehs", "version": "0.1.0", "description": "Open-source accident and safety tracking for manufacturing", "license": "AGPL-3.0-only", "private": true, "type": "module", "engines": { "node": ">=22.18" }, "scripts": { "dev": "concurrently -k -n web,api -c cyan,magenta \"npm:dev:web\" \"npm:dev:server\"", "dev:web": "vite", "dev:server": "node --watch --env-file-if-exists=.env server/index.ts", "start": "node server/index.ts", "build": "vite build", "preview": "vite preview", "lint": "oxlint --deny-warnings", "typecheck": "tsc -b", "test": "vitest run", "test:watch": "vitest", "test:e2e": "playwright test", "db:generate": "drizzle-kit generate", "db:seed": "node --env-file-if-exists=.env server/db/seed.ts", "check": "npm run lint && npm run typecheck && npm test && npm run build" }, "dependencies": { "@electric-sql/pglite": "^0.5.8", "@hono/node-server": "^2.1.3", "@hono/zod-validator": "^0.9.1", "drizzle-orm": "^0.45.3", "hono": "^4.13.13", "nodemailer": "^10.0.15", "pg": "^8.23.1", "zod": "^4.6.5" }, "devDependencies": { "@fontsource-variable/dm-sans": "^5.3.0", "@fontsource-variable/space-grotesk": "^5.3.0", "@fontsource/dm-mono": "^5.3.0", "@playwright/test": "^1.63.0", "@tailwindcss/vite": "^4.3.3", "@tanstack/react-query": "^5.104.1", "@testing-library/jest-dom": "^7.0.1", "@testing-library/react": "^16.3.3", "@testing-library/user-event": "^14.6.7", "@types/node": "^26.6.4", "@types/nodemailer": "^8.0.2", "@types/pg": "^8.23.1", "@types/qrcode": "^1.5.6", "@types/react": "^19.2.18", "@types/react-dom": "^19.2.4", "@vitejs/plugin-react": "^6.1.0", "concurrently": "^10.0.5", "drizzle-kit": "^0.31.11", "fake-indexeddb": "^6.2.5", "jsdom": "^30.1.2", "lucide-react": "^1.39.0", "oxlint": "^1.79.0", "qrcode": "^1.5.4", "react": "^19.2.8", "react-dom": "^19.2.8", "react-router-dom": "^7.18.3", "tailwindcss": "^4.3.3", "typescript": "^7.0.2", "vite": "^8.2.2", "vite-plugin-pwa": "^2.0.0", "vitest": "^5.0.3", "workbox-window": "^7.4.1" } }