{ "name": "handy-insel-portal", "version": "0.1.0", "private": true, "type": "module", "description": "Handy-Insel Portal – zentrale Startseite und App-Umschalter für alle internen Tools (Authentik-SSO)", "scripts": { "dev:server": "tsx watch server/src/index.ts", "dev:web": "vite", "build": "npm run build:web && npm run build:topbar && npm run build:server", "build:web": "vite build", "build:topbar": "esbuild topbar/src/topbar.ts --bundle --minify --format=iife --target=es2019 --outfile=dist/public/topbar.js", "build:server": "tsc -p server/tsconfig.json", "start": "node dist/server/index.js", "typecheck": "tsc -p server/tsconfig.json --noEmit && tsc -p frontend/tsconfig.json --noEmit" }, "engines": { "node": ">=20" }, "dependencies": { "@fontsource/ibm-plex-sans": "^5.3.0", "better-sqlite3": "^12.11.1", "express": "^4.22.3", "express-session": "^1.19.0", "helmet": "^8.3.0", "openid-client": "^6.8.8" }, "devDependencies": { "@tailwindcss/vite": "^4.3.3", "@types/better-sqlite3": "^9.6.0", "@types/express": "^4.17.25", "@types/express-session": "^1.19.0", "@types/node": "^26.6.3", "@types/react": "^19.3.0", "@types/react-dom": "^19.3.0", "@vitejs/plugin-react": "^6.1.1", "esbuild": "^0.28.2", "react": "^19.3.0", "react-dom": "^19.3.0", "tailwindcss": "^4.3.3", "tsx": "^4.23.15", "typescript": "^7.0.2", "vite": "^8.3.1" } }