{ "name": "vikunja-frontend", "description": "The todo app to organize your life.", "private": true, "version": "0.10.0", "license": "AGPL-3.0-or-later", "repository": { "type": "git", "url": "https://kolaente.dev/vikunja/vikunja" }, "bugs": { "url": "https://kolaente.dev/vikunja/vikunja/issues" }, "homepage": "https://vikunja.io/", "funding": "https://opencollective.com/vikunja", "packageManager": "pnpm@10.17.0", "keywords": [ "todo", "productivity", "task management", "organisation", "gantt", "kanban" ], "type": "module", "scripts": { "dev": "vite", "serve": "pnpm run dev", "preview": "vite preview --port 4173", "preview:dev": "vite preview --outDir dist-dev --mode development --port 4173", "preview:vikunja": "../vikunja", "build": "vite build && workbox copyLibraries dist/", "build:dev": "vite build --mode development --outDir dist-dev/", "lint": "eslint 'src/**/*.{js,ts,vue}'", "lint:fix": "pnpm run lint --fix", "lint:styles": "stylelint 'src/**/*.{css,scss,vue}'", "lint:styles:fix": "pnpm run lint:styles --fix", "test:e2e": "start-server-and-test preview http://127.0.0.1:4173 'cypress run --e2e --browser electron'", "test:e2e-nix": "CYPRESS_RUN_BINARY=`which Cypress` start-server-and-test preview http://127.0.0.1:4173 'cypress run --e2e --browser chromium'", "test:e2e-record-test": "start-server-and-test preview:test http://127.0.0.1:4173 'cypress run --e2e --browser chrome --record'", "test:e2e-dev-dev": "start-server-and-test preview:dev http://127.0.0.1:4173 'cypress open --e2e'", "test:e2e-dev": "start-server-and-test preview http://127.0.0.1:4173 'cypress open --e2e'", "test:unit": "vitest --dir ./src", "typecheck": "vue-tsc --build --force", "fonts:update": "pnpm fonts:download && pnpm fonts:subset", "fonts:download": "./scripts/fonts-download.sh", "fonts:subset": "./scripts/fonts-subset.sh", "story:dev": "histoire dev", "story:build": "histoire build", "story:preview": "histoire preview" }, "dependencies": { "@floating-ui/dom": "1.7.4", "@fortawesome/fontawesome-svg-core": "7.0.1", "@fortawesome/free-regular-svg-icons": "7.0.1", "@fortawesome/free-solid-svg-icons": "7.0.1", "@fortawesome/vue-fontawesome": "3.1.2", "@github/hotkey": "3.1.1", "@intlify/unplugin-vue-i18n": "11.0.1", "@kyvg/vue3-notification": "3.4.1", "@sentry/tracing": "7.120.4", "@sentry/vue": "10.12.0", "@tiptap/core": "3.4.4", "@tiptap/extension-code-block-lowlight": "3.4.4", "@tiptap/extension-hard-break": "3.4.4", "@tiptap/extension-image": "3.4.4", "@tiptap/extension-link": "3.4.4", "@tiptap/extension-list": "3.4.4", "@tiptap/extension-table": "3.4.4", "@tiptap/extension-typography": "3.4.4", "@tiptap/extension-underline": "3.4.4", "@tiptap/extensions": "3.4.4", "@tiptap/pm": "3.4.4", "@tiptap/starter-kit": "3.4.4", "@tiptap/suggestion": "3.4.4", "@tiptap/vue-3": "3.4.4", "@vueuse/core": "13.9.0", "@vueuse/router": "13.9.0", "axios": "1.12.2", "blurhash": "2.0.5", "bulma-css-variables": "0.9.33", "change-case": "5.4.4", "dayjs": "1.11.18", "dompurify": "3.2.7", "fast-deep-equal": "3.1.3", "flatpickr": "4.6.13", "flexsearch": "0.7.43", "floating-vue": "5.2.2", "is-touch-device": "1.0.1", "klona": "2.0.6", "lowlight": "3.3.0", "marked": "16.3.0", "pinia": "3.0.3", "register-service-worker": "1.7.2", "sortablejs": "1.15.6", "tailwindcss": "3.4.17", "ufo": "1.6.1", "vue": "3.5.21", "vue-advanced-cropper": "2.8.9", "vue-flatpickr-component": "11.0.5", "vue-i18n": "11.1.12", "vue-router": "4.5.1", "vuemoji-picker": "0.3.2", "workbox-precaching": "7.3.0", "zhyswan-vuedraggable": "4.1.3", "zod": "^4.1.9" }, "devDependencies": { "@4tw/cypress-drag-drop": "2.3.0", "@cypress/vite-dev-server": "7.0.0", "@cypress/vue": "6.0.2", "@faker-js/faker": "9.9.0", "@histoire/plugin-screenshot": "1.0.0-alpha.3", "@histoire/plugin-vue": "1.0.0-alpha.3", "@tsconfig/node22": "22.0.2", "@types/codemirror": "5.60.16", "@types/is-touch-device": "1.0.3", "@types/node": "22.18.6", "@types/sortablejs": "1.15.8", "@typescript-eslint/eslint-plugin": "8.44.0", "@typescript-eslint/parser": "8.44.0", "@vitejs/plugin-vue": "6.0.1", "@vue/eslint-config-typescript": "14.6.0", "@vue/test-utils": "2.4.6", "@vue/tsconfig": "0.8.1", "autoprefixer": "10.4.21", "browserslist": "4.26.2", "caniuse-lite": "1.0.30001743", "csstype": "3.1.3", "cypress": "14.5.4", "esbuild": "0.25.10", "eslint": "9.35.0", "eslint-plugin-vue": "10.4.0", "happy-dom": "18.0.1", "histoire": "1.0.0-alpha.3", "postcss": "8.5.6", "postcss-easing-gradients": "3.0.1", "postcss-preset-env": "10.3.1", "rollup": "4.50.2", "rollup-plugin-visualizer": "6.0.3", "sass-embedded": "1.92.1", "start-server-and-test": "2.1.1", "stylelint": "16.24.0", "stylelint-config-property-sort-order-smacss": "10.0.0", "stylelint-config-recommended-vue": "1.6.1", "stylelint-config-standard-scss": "15.0.1", "stylelint-use-logical": "2.1.2", "typescript": "5.9.2", "unplugin-inject-preload": "3.0.0", "vite": "7.1.6", "vite-plugin-pwa": "1.0.3", "vite-plugin-sentry": "1.4.1", "vite-plugin-vue-devtools": "8.0.2", "vite-svg-loader": "5.1.0", "vitest": "3.2.4", "vue-tsc": "3.0.7", "wait-on": "8.0.5", "workbox-cli": "7.3.0" }, "pnpm": { "patchedDependencies": { "@github/hotkey@3.1.1": "patches/@github__hotkey@3.1.1.patch", "flexsearch@0.7.43": "patches/flexsearch@0.7.43.patch" }, "onlyBuiltDependencies": [ "@parcel/watcher", "@sentry/cli", "cypress", "esbuild", "puppeteer", "vue-demi" ] } }