P1-0: V8 heap cap (HOMARR_MAX_OLD_SPACE_SIZE, default 512MB)
P1-1: Module graph cuts
- Dynamic integration imports (55 static → lazy loaders)
- Conditional DB driver loading (only configured driver loaded)
- Replace jsdom with linkedom for SVG sanitization
- Delete eager widget barrel (55 import * as → 0)
- Extract createRetryableLoader to @homarr/common
P1-2: Enable cacheComponents + restructure root layout
- Suspense boundaries around session-dependent providers
- ColorSchemeScript replaces server-side cookie reads
- Board/manage/auth layouts wrapped in Suspense
P1-3: Cache read paths
- Cache tag registry + invalidation helpers
- Cache invalidation wired into all mutation routers
- Translation deep-merge memoized per locale
P1-4: Prerendered shells + loading.tsx files
P1-5: Shared integration data cache (60s TTL, stale-while-revalidate)
P1-6: Redis-backed Next.js cache handler (@homarr/next-cache-handler)
P1-7: Redis optional (memory channel fallback), TTL on pubSub:last:*,
Redis clients consolidated from 6 to 2
72 lines
2.4 KiB
JSON
72 lines
2.4 KiB
JSON
{
|
|
"name": "@homarr/api",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"license": "Apache-2.0",
|
|
"type": "module",
|
|
"main": "./src/index.ts",
|
|
"types": "./src/index.ts",
|
|
"exports": {
|
|
".": "./src/index.ts",
|
|
"./client": "./src/client.ts",
|
|
"./board-server": "./src/board-server.ts",
|
|
"./cache-invalidation": "./src/cache-invalidation.ts",
|
|
"./cache-tags": "./src/cache-tags.ts",
|
|
"./query-cache": "./src/query-cache.ts",
|
|
"./server-settings-server": "./src/server-settings-server.ts",
|
|
"./user-server": "./src/user-server.ts",
|
|
"./server": "./src/server.ts",
|
|
"./websocket": "./src/websocket.ts",
|
|
"./shared": "./src/shared.ts",
|
|
"./open-api": "./src/open-api.ts",
|
|
"./custom-widget/display-data": "./src/router/custom-widget/display-data.ts",
|
|
"./mcp": "./src/mcp.ts"
|
|
},
|
|
"scripts": {
|
|
"clean": "rm -rf .turbo node_modules",
|
|
"format": "oxfmt .",
|
|
"lint": "oxlint",
|
|
"typecheck": "tsc --noEmit"
|
|
},
|
|
"dependencies": {
|
|
"@homarr/analytics": "workspace:^0.1.0",
|
|
"@homarr/auth": "workspace:^0.1.0",
|
|
"@homarr/common": "workspace:^0.1.0",
|
|
"@homarr/core": "workspace:^0.1.0",
|
|
"@homarr/cron-job-status": "workspace:^0.1.0",
|
|
"@homarr/cron-jobs": "workspace:^0.1.0",
|
|
"@homarr/db": "workspace:^0.1.0",
|
|
"@homarr/definitions": "workspace:^0.1.0",
|
|
"@homarr/docker": "workspace:^0.1.0",
|
|
"@homarr/icons": "workspace:^0.1.0",
|
|
"@homarr/integrations": "workspace:^0.1.0",
|
|
"@homarr/old-import": "workspace:^0.1.0",
|
|
"@homarr/old-schema": "workspace:^0.1.0",
|
|
"@homarr/ping": "workspace:^0.1.0",
|
|
"@homarr/redis": "workspace:^0.1.0",
|
|
"@homarr/request-handler": "workspace:^0.1.0",
|
|
"@homarr/server-settings": "workspace:^0.1.0",
|
|
"@homarr/translation": "workspace:^0.1.0",
|
|
"@homarr/validation": "workspace:^0.1.0",
|
|
"@kubernetes/client-node": "catalog:",
|
|
"@tanstack/react-query": "catalog:",
|
|
"@trpc/client": "catalog:",
|
|
"@trpc/react-query": "catalog:",
|
|
"@trpc/server": "catalog:",
|
|
"@trpc/tanstack-react-query": "catalog:",
|
|
"jsonpath-plus": "catalog:",
|
|
"lodash.clonedeep": "catalog:",
|
|
"next": "catalog:",
|
|
"react": "catalog:",
|
|
"react-dom": "catalog:",
|
|
"superjson": "catalog:",
|
|
"trpc-to-mcp": "catalog:",
|
|
"trpc-to-openapi": "catalog:",
|
|
"zod": "catalog:"
|
|
},
|
|
"devDependencies": {
|
|
"@homarr/tsconfig": "workspace:^0.1.0",
|
|
"typescript": "catalog:"
|
|
}
|
|
}
|