{ "name": "blogging-desktop-server", "productName": "Blogging Desktop Server", "version": "1.0.0", "description": "A desktop blogging application with offline-first capabilities and cloud sync", "main": "dist/main/main.js", "scripts": { "dev": "concurrently --kill-others \"npm run dev:main\" \"npm run dev:renderer\" \"npm run dev:electron\"", "dev:main": "node ./node_modules/typescript/bin/tsc -p tsconfig.main.json --watch", "dev:renderer": "node ./node_modules/vite/bin/vite.js", "dev:electron": "wait-on http://localhost:5173 && cross-env NODE_ENV=development node ./node_modules/electron/cli.js .", "start": "concurrently --kill-others \"npm run dev:renderer\" \"npm run start:electron\"", "start:electron": "wait-on http://localhost:5173 && cross-env NODE_ENV=development node ./node_modules/electron/cli.js .", "build": "npm run lint && npm run db:generate && npm run build:main && npm run build:renderer", "package": "npm run build && electron-builder --dir", "dist": "npm run build && electron-builder", "dist:mac": "npm run build && electron-builder --mac", "dist:win": "npm run build && electron-builder --win", "dist:linux": "npm run build && electron-builder --linux", "build:main": "node ./node_modules/typescript/bin/tsc -p tsconfig.main.json", "build:renderer": "node ./node_modules/vite/bin/vite.js build", "start:prod": "node ./node_modules/electron/cli.js .", "start:dev": "cross-env NODE_ENV=development node ./node_modules/electron/cli.js .", "test": "vitest run", "test:watch": "vitest", "test:coverage": "vitest run --coverage", "test:ui": "vitest --ui", "lint": "eslint \"src/renderer/**/*.{ts,tsx}\" --max-warnings 0", "lint:i18n": "eslint \"src/renderer/**/*.{ts,tsx}\" --max-warnings 0", "db:generate": "node ./node_modules/drizzle-kit/bin.cjs generate", "db:migrate": "node ./node_modules/tsx/dist/cli.mjs src/main/database/migrate.ts", "db:studio": "node ./node_modules/drizzle-kit/bin.cjs studio" }, "author": "", "license": "MIT", "devDependencies": { "@electron/notarize": "^3.1.0", "@testing-library/jest-dom": "^6.9.1", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.1", "@types/chokidar": "^1.7.5", "@types/node": "^25.2.3", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@types/turndown": "^5.0.6", "@typescript-eslint/eslint-plugin": "^8.56.0", "@typescript-eslint/parser": "^8.56.0", "@vitejs/plugin-react": "^5.1.4", "@vitest/coverage-v8": "^4.0.18", "@vitest/ui": "^4.0.18", "concurrently": "^9.2.1", "cross-env": "^10.1.0", "drizzle-kit": "^0.31.9", "electron": "^40.4.0", "electron-builder": "^26.7.0", "electron-store": "^11.0.2", "eslint": "^9.39.3", "eslint-plugin-i18next": "^6.1.3", "jsdom": "^28.0.0", "memfs": "^4.6.0", "tsx": "^4.6.0", "typescript": "^5.3.0", "vite": "^7.3.1", "vitest": "^4.0.18", "wait-on": "^9.0.3" }, "dependencies": { "@braintree/sanitize-url": "^7.1.2", "@floating-ui/dom": "^1.7.5", "@highlightjs/cdn-assets": "^11.11.1", "@libsql/client": "^0.17.0", "@milkdown/kit": "^7.18.0", "@milkdown/plugin-block": "^7.18.0", "@milkdown/plugin-clipboard": "^7.18.0", "@milkdown/plugin-cursor": "^7.18.0", "@milkdown/plugin-history": "^7.18.0", "@milkdown/plugin-indent": "^7.18.0", "@milkdown/plugin-listener": "^7.18.0", "@milkdown/plugin-trailing": "^7.18.0", "@milkdown/react": "^7.18.0", "@milkdown/theme-nord": "^7.18.0", "@monaco-editor/react": "^4.7.0", "@picocss/pico": "^2.1.1", "@xmldom/xmldom": "^0.8.11", "chokidar": "^5.0.0", "d3-cloud": "^1.2.8", "date-fns": "^4.1.0", "drizzle-orm": "^0.45.1", "dropbox": "^10.34.0", "fast-xml-parser": "^5.3.7", "gray-matter": "^4.0.3", "lightbox2": "^2.11.5", "liquidjs": "^10.24.0", "marked-react": "^3.0.2", "monaco-editor": "^0.55.1", "react": "^19.2.4", "react-arborist": "^3.4.3", "react-dom": "^19.2.4", "react-hot-toast": "^2.6.0", "sharp": "^0.34.5", "simple-git": "^3.31.1", "snowball-stemmers": "^0.6.0", "turndown": "^7.2.2", "uuid": "^13.0.0", "vanilla-calendar-pro": "^3.1.0", "zod": "^4.3.6", "zustand": "^5.0.11" }, "overrides": { "@esbuild-kit/core-utils": { "esbuild": "0.27.3" } }, "build": { "appId": "com.bds.blogging-desktop-server", "productName": "Blogging Desktop Server", "asar": true, "afterSign": "scripts/notarize.mjs", "directories": { "output": "release" }, "files": [ "dist/**/*", "drizzle/**/*", "node_modules/**/*" ], "extraResources": [ { "from": "drizzle", "to": "drizzle" } ], "protocols": [ { "name": "bDS Blogmark Links", "schemes": [ "bds" ] } ], "win": { "icon": "assets/icon.ico", "target": [ { "target": "nsis", "arch": [ "x64", "arm64" ] } ] }, "mac": { "icon": "assets/icon.icns", "target": [ "dmg", "zip" ], "category": "public.app-category.productivity", "hardenedRuntime": true, "gatekeeperAssess": false, "entitlements": "build/entitlements.mac.plist", "entitlementsInherit": "build/entitlements.mac.inherit.plist" }, "linux": { "icon": "assets/icon.png", "target": [ "AppImage", "deb", "rpm" ], "category": "Utility" } } }