{ "name": "notvex", "version": "0.3.1", "description": "Encrypted notes, 100% local. No account, no server, no cloud", "keywords": [ "security", "encryption", "self-hosted", "electron-app", "notes-app" ], "homepage": "https://notvex.vercel.app", "bugs": { "url": "https://github.com/GFrancV/notvex/issues", "email": "gfrancv@hotmail.com" }, "license": "AGPL-3.0-only", "author": { "name": "GFrancV", "email": "gfrancv@hotmail.com", "url": "https://gfrancv.vercel.app" }, "main": "out/main/index.js", "repository": { "type": "git", "url": "git+https://github.com/GFrancV/notvex.git" }, "scripts": { "dev": "electron-vite dev", "preview": "electron-vite preview", "postinstall": "install-electron && electron-builder install-app-deps", "gen:icon": "icon-gen -i build/icon.png -o build --ico --ico-name icon --icns --icns-name icon", "build": "electron-vite build && pnpm gen:icon", "build:unpack": "pnpm build && electron-builder --dir", "build:win": "pnpm build && electron-builder --win", "build:mac": "pnpm build && electron-builder --mac", "build:linux": "pnpm build && electron-builder --linux", "typecheck:node": "tsc --noEmit -p tsconfig.node.json --composite false", "typecheck:web": "tsc --noEmit -p tsconfig.web.json --composite false", "typecheck": "tsc --noEmit -p tsconfig.json && pnpm typecheck:node && pnpm typecheck:web", "lint": "eslint src tests --max-warnings 0 --cache", "lint:fix": "eslint src tests --fix", "format": "prettier --write \"src/**/*.{ts,tsx,css}\" \"tests/**/*.ts\" \"*.{ts,mjs,json}\"", "format:check": "prettier --check \"src/**/*.{ts,tsx,css}\" \"tests/**/*.ts\" \"*.{ts,mjs,json}\"", "doctor": "react-doctor", "doctor:staged": "react-doctor --staged --verbose", "test": "vitest run", "test:watch": "vitest", "test:main": "vitest run tests/main", "test:vault": "vitest run tests/main/vault", "test:db": "vitest run tests/main/db", "test:ipc": "vitest run tests/main/ipc", "test:app": "vitest run tests/main/app", "test:preload": "vitest run tests/preload", "test:renderer": "vitest run tests/renderer", "test:coverage": "vitest run --coverage", "depcruise": "depcruise src --config .dependency-cruiser.cjs", "validate": "pnpm typecheck && pnpm lint && pnpm format:check", "check:fast": "pnpm typecheck && pnpm lint", "lint:commits": "commitlint --from origin/main --to HEAD", "check:task": "pnpm validate && pnpm depcruise && pnpm lint:commits && pnpm test", "check:full": "pnpm check:task && pnpm test:coverage", "prepare": "husky" }, "dependencies": { "@electron-toolkit/preload": "^3.0.2", "@electron-toolkit/utils": "^4.0.0", "@journeyapps/sqlcipher": "^5.3.1", "bip39": "^3.1.0", "dompurify": "^3.4.17", "electron-updater": "^6.3.9", "koffi": "^3.0.2", "libsodium-wrappers-sumo": "^0.8.4" }, "devDependencies": { "@codemirror/commands": "^6.10.4", "@codemirror/lang-markdown": "^6.5.0", "@codemirror/language": "^6.12.4", "@codemirror/language-data": "^6.5.2", "@codemirror/search": "^6.7.1", "@codemirror/state": "^6.7.6", "@codemirror/view": "^6.43.13", "@commitlint/cli": "^21.0.2", "@commitlint/config-conventional": "^21.0.2", "@electron-toolkit/eslint-config-prettier": "^3.0.0", "@electron-toolkit/eslint-config-ts": "^3.1.0", "@electron-toolkit/tsconfig": "^2.0.0", "@eslint/js": "^9.39.4", "@fontsource-variable/inter": "5.3.0", "@fontsource-variable/jetbrains-mono": "5.3.0", "@radix-ui/react-dialog": "^1.1.17", "@radix-ui/react-dropdown-menu": "^2.1.18", "@radix-ui/react-label": "^2.1.10", "@radix-ui/react-popover": "^1.1.17", "@radix-ui/react-scroll-area": "^1.2.12", "@radix-ui/react-separator": "^1.1.10", "@radix-ui/react-slot": "^1.3.0", "@radix-ui/react-tabs": "^1.1.15", "@radix-ui/react-tooltip": "^1.2.10", "@tailwindcss/typography": "^0.5.15", "@tailwindcss/vite": "^4.3.1", "@testing-library/dom": "^10.4.2", "@testing-library/react": "^16.3.3", "@types/libsodium-wrappers": "^0.7.14", "@types/libsodium-wrappers-sumo": "^0.7.8", "@types/node": "^22.19.1", "@types/react": "^19.2.7", "@types/react-dom": "^19.2.3", "@types/sqlite3": "^3.1.11", "@uiw/codemirror-theme-andromeda": "^4.25.11", "@uiw/react-codemirror": "^4.25.10", "@vitejs/plugin-react": "^5.1.1", "@vitest/coverage-v8": "^4.1.12", "class-variance-authority": "^0.7.1", "cmdk": "^1.1.1", "cn": "0.5.0", "date-fns": "^4.4.0", "dependency-cruiser": "^18.2.0", "electron": "^44.9.3", "electron-builder": "^26.0.12", "electron-vite": "^5.0.0", "eslint": "^9.39.1", "eslint-config-prettier": "^10.1.8", "eslint-import-resolver-typescript": "^4.4.5", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.2", "eslint-plugin-react": "^7.37.5", "eslint-plugin-react-hooks": "^7.0.1", "eslint-plugin-react-refresh": "^0.4.24", "eslint-plugin-unicorn": "^64.0.0", "husky": "^9.1.7", "icon-gen": "^5.0.0", "jsdom": "^30.1.0", "lint-staged": "^16.4.0", "lucide-react": "^1.21.0", "millify": "^6.1.0", "next-themes": "^0.4.6", "prettier": "^3.7.4", "prettier-plugin-tailwindcss": "^0.8.0", "radix-ui": "^1.6.0", "react": "19.2.1", "react-doctor": "^0.5.1", "react-dom": "19.2.1", "react-markdown": "^10.1.0", "rehype-highlight": "^7.0.2", "rehype-sanitize": "^6.0.0", "remark-gfm": "^4.0.1", "shadcn": "^4.21.5", "sonner": "^2.0.7", "tailwindcss": "^4.3.1", "tw-animate-css": "^1.4.0", "typescript": "^5.9.3", "vite": "^7.3.7", "vitest": "^4.1.12", "zustand": "^5.0.14" }, "engines": { "node": "^22.22.2 || ^24.15.0 || >=26.0.0" }, "packageManager": "pnpm@11.1.1", "lint-staged": { "src/**/*.{ts,tsx}": [ "eslint --fix --max-warnings 0", "prettier --write" ], "tests/**/*.ts": [ "eslint --fix --max-warnings 0", "prettier --write" ], "*.{json,md,yml,yaml}": [ "prettier --write" ] } }