mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 12:32:43 +00:00
Document reading no longer treats a signed-in subscription model as unable to see images, so 'read with AI' works on that path instead of erroring; scanned PDFs and photos are read the same way. Drops two now-redundant blurbs from the document panel and, on the recovery insights page, moves each metric's explanation into its own card instead of repeating the heading above it.
149 lines
4.4 KiB
JSON
149 lines
4.4 KiB
JSON
{
|
|
"name": "healthlog",
|
|
"version": "1.28.5",
|
|
"description": "Self-hosted personal-health-tracking PWA with Withings integration, AI insights, and doctor-report PDF export.",
|
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
"homepage": "https://healthlog.dev",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/MBombeck/HealthLog.git"
|
|
},
|
|
"bugs": {
|
|
"url": "https://github.com/MBombeck/HealthLog/issues"
|
|
},
|
|
"keywords": [
|
|
"health-tracking",
|
|
"self-hosted",
|
|
"pwa",
|
|
"blood-pressure",
|
|
"withings",
|
|
"next.js",
|
|
"prisma",
|
|
"passkey"
|
|
],
|
|
"private": true,
|
|
"packageManager": "pnpm@10.31.0",
|
|
"scripts": {
|
|
"prepare": "lefthook install || echo 'lefthook install skipped (no git repo or binary unavailable)'",
|
|
"dev": "next dev",
|
|
"predev": "node scripts/generate-i18n-boot.mjs",
|
|
"prebuild": "node scripts/generate-sw-version.mjs && node scripts/generate-i18n-boot.mjs",
|
|
"build": "next build",
|
|
"analyze": "ANALYZE=1 next build",
|
|
"bundle-report": "node scripts/check-bundle-budget.mjs",
|
|
"bundle-check": "node scripts/check-bundle-budget.mjs --check",
|
|
"start": "next start",
|
|
"lint": "eslint",
|
|
"db:generate": "prisma generate",
|
|
"db:push": "prisma db push",
|
|
"db:migrate": "prisma migrate dev",
|
|
"db:migrate:deploy": "prisma migrate deploy",
|
|
"db:studio": "prisma studio",
|
|
"format": "prettier --write .",
|
|
"format:check": "prettier --check .",
|
|
"typecheck": "tsc --noEmit",
|
|
"test": "vitest run",
|
|
"test:watch": "vitest",
|
|
"test:integration": "vitest run --config vitest.integration.config.mts",
|
|
"e2e": "playwright test",
|
|
"e2e:ui": "playwright test --ui",
|
|
"openapi:generate": "npx tsx scripts/generate-openapi.ts",
|
|
"openapi:check": "npx tsx scripts/check-openapi.ts",
|
|
"check-env": "npx tsx scripts/check-env.ts",
|
|
"mcp:stdio": "npx tsx src/cli/mcp-stdio.ts"
|
|
},
|
|
"dependencies": {
|
|
"@aws-sdk/client-s3": "^3.1075.0",
|
|
"@dnd-kit/core": "^6.3.1",
|
|
"@dnd-kit/sortable": "^10.0.0",
|
|
"@dnd-kit/utilities": "^3.2.2",
|
|
"@hookform/resolvers": "^5.4.0",
|
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
"@napi-rs/canvas": "0.1.80",
|
|
"@node-rs/argon2": "^2.0.2",
|
|
"@parse/node-apn": "^8.1.0",
|
|
"@prisma/adapter-pg": "^7.8.0",
|
|
"@prisma/client": "^7.8.0",
|
|
"@simplewebauthn/browser": "^13.3.0",
|
|
"@simplewebauthn/server": "^13.3.1",
|
|
"@tanstack/react-query": "5.101.2",
|
|
"@tanstack/react-virtual": "^3.14.5",
|
|
"@types/sax": "^1.2.7",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"date-fns": "^4.4.0",
|
|
"dotenv": "^17.4.2",
|
|
"fflate": "^0.8.3",
|
|
"jspdf": "^4.2.1",
|
|
"jspdf-autotable": "^5.0.8",
|
|
"lucide-react": "^1.18.0",
|
|
"mmdb-lib": "^3.0.2",
|
|
"next": "16.2.10",
|
|
"next-themes": "^0.4.6",
|
|
"nodemailer": "9.0.3",
|
|
"otpauth": "^9.5.1",
|
|
"p-limit": "^7.3.0",
|
|
"pg-boss": "^12.20.0",
|
|
"prisma": "^7.8.0",
|
|
"qrcode": "^1.5.4",
|
|
"radix-ui": "^1.6.0",
|
|
"react": "19.2.7",
|
|
"react-day-picker": "^10.0.1",
|
|
"react-dom": "19.2.7",
|
|
"react-hook-form": "7.81.0",
|
|
"recharts": "^3.8.1",
|
|
"rrule": "^2.8.1",
|
|
"sax": "^1.6.0",
|
|
"sonner": "^2.0.7",
|
|
"tailwind-merge": "^3.6.0",
|
|
"tesseract.js": "^7.0.0",
|
|
"undici": "^8.5.0",
|
|
"web-push": "^3.6.7",
|
|
"yaml": "^2.8.4",
|
|
"zod": "^4.4.3",
|
|
"zod-openapi": "^6.0.0",
|
|
"zxcvbn-typescript": "^5.0.1"
|
|
},
|
|
"devDependencies": {
|
|
"@axe-core/playwright": "^4.12.1",
|
|
"@next/bundle-analyzer": "^16.2.9",
|
|
"@playwright/test": "^1.60.0",
|
|
"@tailwindcss/postcss": "^4",
|
|
"@testcontainers/postgresql": "^12.0.3",
|
|
"@types/node": "26.1.0",
|
|
"@types/nodemailer": "^8.0.1",
|
|
"@types/pg": "^8.20.0",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@types/react": "^19",
|
|
"@types/react-dom": "^19",
|
|
"@types/web-push": "^3.6.4",
|
|
"@vitejs/plugin-react": "^5.1.4",
|
|
"@vitest/coverage-v8": "^4.1.5",
|
|
"eslint": "^9",
|
|
"eslint-config-next": "16.2.6",
|
|
"knip": "^6.16.1",
|
|
"lefthook": "^2.1.9",
|
|
"pdf-parse": "^2.4.5",
|
|
"pdfjs-dist": "5.4.296",
|
|
"pg": "^8.22.0",
|
|
"prettier": "^3.9.1",
|
|
"prettier-plugin-tailwindcss": "^0.8.0",
|
|
"shadcn": "^4.9.0",
|
|
"tailwindcss": "^4",
|
|
"testcontainers": "^12.0.3",
|
|
"tw-animate-css": "^1.4.0",
|
|
"typescript": "^6",
|
|
"vitest": "^4.1.5"
|
|
},
|
|
"pnpm": {
|
|
"onlyBuiltDependencies": [
|
|
"prisma",
|
|
"@prisma/engines"
|
|
],
|
|
"overrides": {
|
|
"hono@<4.12.25": "^4.12.25",
|
|
"picomatch@<4.0.4": "^4.0.4"
|
|
}
|
|
}
|
|
}
|