{ "name": "divetracx", "version": "0.1.0", "description": "Self-hosted dive log that imports from DiveMate and Garmin, exports open formats, and exposes a scoped MCP server", "license": "MIT", "private": true, "type": "module", "repository": { "type": "git", "url": "git+https://github.com/michidk/divetracx.git" }, "homepage": "https://divetracx.vercel.app", "bugs": "https://github.com/michidk/divetracx/issues", "packageManager": "bun@1.4.4", "engines": { "bun": "1.4.4" }, "scripts": { "dev": "vite dev --port 3000", "build": "vite build", "build:demo": "bun run scripts/generate-demo-snapshot.ts && DIVETRACX_EDITION=demo vite build && bun run scripts/copy-pglite-assets.ts", "start": "bun .output/server/index.mjs", "generate-routes": "tsr generate", "check": "biome check .", "check:fix": "biome check --write .", "typecheck": "tsc --noEmit", "test": "bun test", "test:integration:divemate-export": "RUN_DIVEMATE_INTEGRATION_TESTS=true bun test src/modules/divemate/server/writeback.integration.test.ts", "test:integration:imports": "RUN_IMPORT_INTEGRATION_TESTS=true bun test src/modules/integrations/server/import-service.integration.test.ts src/modules/divemate/server/sync.integration.test.ts src/modules/garmin/server/gear.integration.test.ts src/modules/dives/server/merge.integration.test.ts src/modules/dives/server/mutations.integration.test.ts src/modules/dives/server/numbering.integration.test.ts src/modules/dives/server/queries.integration.test.ts src/modules/sites/server/mutations.integration.test.ts src/modules/buddies/server/mutations.integration.test.ts src/modules/buddies/server/credentials.integration.test.ts src/modules/gear/server/mutations.integration.test.ts src/modules/profile/server/mutations.integration.test.ts src/modules/profile/server/certifications.integration.test.ts src/modules/profile/server/agency-memberships.integration.test.ts src/modules/media/server/mutations.integration.test.ts", "check:helm": "bash scripts/verify-helm.sh", "lint:deadcode": "knip", "verify": "bun run check && bun run typecheck && bun run test && bun run lint:deadcode && bun run build && bun run check:helm", "db:generate": "drizzle-kit generate", "db:migrate": "bun run scripts/migrate.ts", "db:migrate:cli": "drizzle-kit migrate", "db:push": "drizzle-kit push", "db:seed": "bun run scripts/seed.ts", "db:studio": "drizzle-kit studio", "sync:divemate": "bun run scripts/sync-divemate.ts", "media:refresh-thumbnails": "bun run scripts/refresh-thumbnails.ts", "import:incremental": "bun run scripts/import-integration.ts", "import:subsurface": "bun run scripts/import-subsurface.ts", "probe:garmin-dive": "bun run scripts/probe-garmin-dive.ts", "export:divemate": "bun run scripts/export-divemate.ts" }, "dependencies": { "@aws-sdk/client-s3": "^3.1068.0", "@base-ui/react": "^1.7.0", "@garmin/fitsdk": "21.218.0", "@modelcontextprotocol/server": "^2", "@t3-oss/env-core": "^0.13.11", "@tailwindcss/vite": "^4.1.18", "@tanstack/react-router": "^1.170.41", "@tanstack/react-start": "^1.168.60", "axios-cookiejar-support": "7.0.0", "better-sqlite3": "13.0.3", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "date-fns": "^4.4.0", "drizzle-orm": "^0.45.2", "fast-xml-parser": "^5.11.1", "fflate": "^0.8.3", "garmin-connect-2fa": "1.6.3", "google-auth-library": "^11.0.2", "lucide-react": "^1.0.0", "maplibre-gl": "^6.0.0", "postgres": "^4.0.0", "react": "^19.2.0", "react-day-picker": "^10.0.1", "react-dom": "^19.2.0", "sharp": "^0.35.2", "sonner": "^2.0.8", "tailwind-merge": "^3.6.0", "tough-cookie": "6.0.2", "zod": "^4.4.3" }, "devDependencies": { "@biomejs/biome": "2.6.6", "@electric-sql/pglite": "0.5.15", "@tanstack/router-cli": "1.167.46", "@types/better-sqlite3": "9.6.0", "@types/bun": "1.4.4", "@types/node": "26.6.6", "@types/react": "^19.2.0", "@types/react-dom": "^19.2.0", "@vitejs/plugin-react": "6.2.1", "drizzle-kit": "0.31.11", "knip": "6.44.2", "nitro": "3.0.260610-beta", "typescript": "7.0.2", "vite": "8.3.6" }, "patchedDependencies": { "garmin-connect-2fa@1.6.3": "patches/garmin-connect-2fa@1.6.3.patch" } }