{ "name": "ipam-homelab", "version": "0.1.0", "private": true, "description": "IPAM (IP Address Management) pour homelab — inventaire, ports, applications et découverte réseau", "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint", "format": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md}\"", "typecheck": "tsc --noEmit", "test": "vitest run", "test:watch": "vitest", "db:generate": "prisma generate", "db:migrate": "prisma migrate dev", "db:deploy": "prisma migrate deploy", "db:studio": "prisma studio", "db:seed": "tsx prisma/seed.ts", "db:reset": "prisma migrate reset", "docker:up": "docker compose -f docker/docker-compose.yml up -d", "docker:down": "docker compose -f docker/docker-compose.yml down", "docker:logs": "docker compose -f docker/docker-compose.yml logs -f", "discovery:run": "tsx scripts/run-discovery.ts" }, "dependencies": { "@hookform/resolvers": "^3.9.0", "@prisma/client": "^5.22.0", "@radix-ui/react-dialog": "^1.1.2", "@radix-ui/react-dropdown-menu": "^2.1.2", "@radix-ui/react-label": "^2.1.0", "@radix-ui/react-select": "^2.1.2", "@radix-ui/react-slot": "^1.1.0", "@radix-ui/react-toast": "^1.2.2", "@tanstack/react-query": "^5.59.0", "bonjour-service": "^1.2.1", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", "ip-address": "^9.0.5", "ip-regex": "^5.0.0", "lucide-react": "^0.454.0", "netmask": "^2.0.2", "next": "^15.0.0", "ping": "^0.4.4", "pino": "^9.5.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-hook-form": "^7.53.0", "tailwind-merge": "^2.5.4", "tailwindcss-animate": "^1.0.7", "zod": "^3.23.8" }, "devDependencies": { "@types/netmask": "^2.0.5", "@types/node": "^22.7.0", "@types/ping": "^0.4.4", "@types/react": "^18.3.11", "@types/react-dom": "^18.3.0", "autoprefixer": "^10.4.20", "eslint": "^9.12.0", "eslint-config-next": "^15.0.0", "postcss": "^8.4.47", "prettier": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.8", "prisma": "^5.22.0", "tailwindcss": "^3.4.13", "tsx": "^4.19.1", "typescript": "^5.6.3", "vitest": "^2.1.2" }, "engines": { "node": ">=20" } }