{ "name": "dockdeck", "version": "0.1.0", "private": true, "type": "module", "scripts": { "dev": "concurrently -k -n api,web -c cyan,magenta \"tsx watch src/server/index.ts\" \"vite --host 127.0.0.1\"", "dev:server": "tsx watch src/server/index.ts", "dev:web": "vite --host 127.0.0.1", "build": "tsc -b && vite build && esbuild src/server/index.ts --bundle --platform=node --format=esm --packages=external --outfile=dist/server/index.js", "start": "node dist/server/index.js", "format": "prettier --write .", "format:check": "prettier --check .", "lint": "eslint . --max-warnings=0", "typecheck": "tsc -b --pretty false", "test": "vitest run", "test:watch": "vitest", "test:e2e": "playwright test", "test:security": "vitest run src/tests/security.test.ts", "gitea:init": "node scripts/init-gitea.mjs" }, "dependencies": { "@fastify/static": "^10.1.0", "@fontsource-variable/geist": "^5.3.0", "@fontsource/newsreader": "^5.2.10", "@icons-pack/react-simple-icons": "13.8.0", "better-sqlite3": "^12.2.0", "drizzle-orm": "^0.45.2", "fastify": "^5.6.1", "lucide-react": "^0.468.0", "react": "^19.1.1", "react-dom": "^19.1.1", "zod": "^4.1.5" }, "devDependencies": { "@eslint/js": "^9.35.0", "@playwright/test": "^1.55.0", "@testing-library/jest-dom": "^6.8.0", "@testing-library/react": "^16.3.0", "@types/better-sqlite3": "^7.6.13", "@types/node": "^24.3.0", "@types/react": "^19.1.12", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.2", "concurrently": "^9.2.1", "esbuild": "^0.25.9", "eslint": "^9.35.0", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.20", "globals": "^16.3.0", "jsdom": "^26.1.0", "prettier": "^3.6.2", "tsx": "^4.20.5", "typescript": "~5.8.3", "typescript-eslint": "^8.42.0", "vite": "^7.1.4", "vitest": "^3.2.4" }, "engines": { "node": ">=22" } }