{ "name": "opengroupware", "version": "0.1.0", "description": "Simple project-based groupware built with Next.js 15, TypeScript, and SQLite", "type": "module", "scripts": { "prepare": "husky", "dev": "next dev", "build": "next build", "start": "next start", "lint": "eslint .", "format": "prettier --write .", "typecheck": "tsc --noEmit", "test": "vitest run", "test:watch": "vitest", "test:e2e": "playwright test", "test:e2e:ui": "playwright test --ui", "test:coverage": "vitest run --coverage", "migrate": "tsx lib/db/run-migrations.ts", "seed": "tsx scripts/seed-demo.ts" }, "keywords": [ "groupware", "nextjs", "sqlite" ], "author": "Ken Yasue", "license": "MIT", "dependencies": { "bcrypt": "^5.1.1", "better-sqlite3": "^11.3.0", "fflate": "^0.8.3", "next": "^15.1.0", "react": "^19.0.0", "react-dom": "^19.0.0", "react-markdown": "^9.0.1", "rehype-sanitize": "^6.0.0", "remark-gfm": "^4.0.0" }, "devDependencies": { "@playwright/test": "^1.49.0", "@types/bcrypt": "^5.0.2", "@types/better-sqlite3": "^7.6.11", "@types/node": "^20.11.0", "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", "@vitest/coverage-v8": "^2.0.0", "@vitest/ui": "^2.0.0", "autoprefixer": "^10.4.20", "eslint": "^9.0.0", "eslint-config-next": "^15.1.0", "eslint-config-prettier": "^9.1.0", "husky": "^9.0.0", "lint-staged": "^15.2.0", "postcss": "^8.4.49", "prettier": "^3.2.0", "tailwindcss": "^3.4.15", "tsx": "^4.19.2", "typescript": "~5.3.0", "typescript-eslint": "^8.0.0", "vitest": "^2.0.0" }, "lint-staged": { "*.{ts,tsx}": [ "eslint --fix", "prettier --write" ] } }