{ "name": "homeio", "version": "1.10.3", "description": "Self-hosted home server dashboard — desktop-style UI for managing Docker apps, files, terminal, and system resources.", "author": "doctor-io", "license": "AGPL-3.0-only", "homepage": "https://github.com/doctor-io/homeio", "repository": { "type": "git", "url": "https://github.com/doctor-io/homeio.git" }, "bugs": { "url": "https://github.com/doctor-io/homeio/issues" }, "private": true, "scripts": { "dev": "node --import tsx server.ts", "dev:website": "cd ../homeio-website && npm run dev -- --port 3100", "build": "next build && npm run build:server", "build:server": "tsc -p tsconfig.server.json && tsc-alias -p tsconfig.server.json", "start": "NODE_ENV=production node dist-server/server.js", "lint": "eslint .", "test": "vitest run", "test:coverage": "vitest run --coverage", "test:watch": "vitest", "prepare": "husky", "db:init": "tsx ./scripts/db-migrate.ts", "db:reset": "tsx ./scripts/db-reset.ts", "db:generate": "drizzle-kit generate", "db:migrate": "drizzle-kit migrate" }, "lint-staged": { "*.{js,jsx,ts,tsx}": [ "eslint --fix" ] }, "dependencies": { "@dawudesign/node-hexa-cli": "^0.7.6", "@fluentui/react-icons": "^2.0.321", "@hookform/resolvers": "^3.9.1", "@lydell/node-pty": "^1.2.0-beta.3", "@radix-ui/react-accordion": "1.2.12", "@radix-ui/react-alert-dialog": "1.1.15", "@radix-ui/react-aspect-ratio": "1.1.8", "@radix-ui/react-avatar": "1.1.11", "@radix-ui/react-checkbox": "1.3.3", "@radix-ui/react-collapsible": "1.1.12", "@radix-ui/react-context-menu": "2.2.16", "@radix-ui/react-dialog": "1.1.15", "@radix-ui/react-dropdown-menu": "2.1.16", "@radix-ui/react-hover-card": "1.1.15", "@radix-ui/react-label": "2.1.8", "@radix-ui/react-menubar": "1.1.16", "@radix-ui/react-navigation-menu": "1.2.14", "@radix-ui/react-popover": "1.1.15", "@radix-ui/react-progress": "1.1.8", "@radix-ui/react-radio-group": "1.3.8", "@radix-ui/react-scroll-area": "1.2.10", "@radix-ui/react-select": "2.2.6", "@radix-ui/react-separator": "1.1.8", "@radix-ui/react-slider": "1.3.6", "@radix-ui/react-slot": "1.2.4", "@radix-ui/react-switch": "1.2.6", "@radix-ui/react-tabs": "1.1.13", "@radix-ui/react-toast": "1.2.15", "@radix-ui/react-toggle": "1.1.10", "@radix-ui/react-toggle-group": "1.1.11", "@radix-ui/react-tooltip": "1.2.8", "@tanstack/react-query": "^5.95.0", "@types/js-yaml": "^4.0.9", "@vercel/analytics": "1.6.1", "autoprefixer": "^10.4.27", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "1.1.1", "compression": "^1.8.2", "date-fns": "4.1.0", "dbus-next": "^0.10.2", "drizzle-orm": "^0.45.3", "embla-carousel-react": "8.6.0", "input-otp": "1.4.2", "js-yaml": "^4.3.2", "next": "^16.4.0", "next-themes": "^0.4.6", "openmeteo": "^1.2.3", "pg": "^8.20.0", "react": "19.2.4", "react-day-picker": "^9.14.0", "react-dom": "19.2.4", "react-hook-form": "^7.72.0", "react-resizable-panels": "^2.1.7", "recharts": "2.15.0", "server-only": "file:packages/server-only", "sonner": "^1.7.1", "systeminformation": "^5.33.13", "tailwind-merge": "^3.3.1", "vaul": "^1.1.2", "ws": "^8.22.0", "xterm": "^5.3.0", "xterm-addon-fit": "^0.8.0", "xterm-addon-web-links": "^0.9.0", "zod": "^3.24.1" }, "devDependencies": { "@tailwindcss/postcss": "^4.2.2", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@types/busboy": "^1.5.4", "@types/compression": "^1.8.1", "@types/d3-color": "^3.1.3", "@types/d3-path": "^3.1.1", "@types/node": "^22", "@types/pg": "^8.20.0", "@types/qrcode": "^1.5.6", "@types/react": "19.2.14", "@types/react-dom": "19.2.3", "@types/ws": "^8.18.1", "@vitest/coverage-v8": "^4.1.11", "busboy": "^1.6.0", "drizzle-kit": "^0.31.10", "drizzle-seed": "^0.3.1", "eslint": "^9.39.4", "eslint-config-next": "^16.3.6", "husky": "^9.1.7", "jsdom": "^28.1.0", "postcss": "^8.5.28", "qrcode": "^1.5.4", "tailwindcss": "^4.2.2", "tsc-alias": "^1.8.16", "tsx": "^4.23.15", "tw-animate-css": "1.3.3", "typescript": "5.7.3", "vitest": "^4.1.11" }, "overrides": { "usocket": { "node-gyp": "^11.5.0" }, "dbus-next": { "xml2js": "^0.6.2" } } }