{ "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/frontend" }, "bugs": { "url": "https://kolaente.dev/vikunja/frontend/issues" }, "homepage": "https://vikunja.io/", "funding": "https://opencollective.com/vikunja", "packageManager": "pnpm@8.10.2", "keywords": [ "todo", "productivity", "task management", "organisation", "gantt", "kanban" ], "scripts": { "serve": "vite", "preview": "vite preview --port 4173", "preview:dev": "vite preview --outDir dist-dev --mode development --port 4173", "build": "vite build && workbox copyLibraries dist/", "build:modern-only": "BUILD_MODERN_ONLY=true vite build && workbox copyLibraries dist/", "build:dev": "vite build --mode development --outDir dist-dev/", "lint": "eslint --ignore-pattern '*.test.*' ./src --ext .vue,.js,.ts", "test:e2e": "start-server-and-test preview http://127.0.0.1:4173 'cypress run --e2e --browser chrome'", "test:e2e-record": "start-server-and-test preview 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 --noEmit && vue-tsc --noEmit -p tsconfig.vitest.json --composite false", "browserslist:update": "pnpm dlx browserslist@latest --update-db", "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": { "@fortawesome/fontawesome-svg-core": "6.4.2", "@fortawesome/free-regular-svg-icons": "6.4.2", "@fortawesome/free-solid-svg-icons": "6.4.2", "@fortawesome/vue-fontawesome": "3.0.5", "@github/hotkey": "2.3.0", "@infectoone/vue-ganttastic": "2.2.0", "@intlify/unplugin-vue-i18n": "1.5.0", "@kyvg/vue3-notification": "3.0.2", "@sentry/tracing": "7.77.0", "@sentry/vue": "7.77.0", "@tiptap/core": "2.1.12", "@tiptap/extension-blockquote": "2.1.12", "@tiptap/extension-bold": "2.1.12", "@tiptap/extension-bullet-list": "2.1.12", "@tiptap/extension-code": "2.1.12", "@tiptap/extension-code-block-lowlight": "2.1.12", "@tiptap/extension-document": "2.1.12", "@tiptap/extension-dropcursor": "2.1.12", "@tiptap/extension-gapcursor": "2.1.12", "@tiptap/extension-hard-break": "2.1.12", "@tiptap/extension-heading": "2.1.12", "@tiptap/extension-history": "2.1.12", "@tiptap/extension-horizontal-rule": "2.1.12", "@tiptap/extension-image": "2.1.12", "@tiptap/extension-italic": "2.1.12", "@tiptap/extension-link": "2.1.12", "@tiptap/extension-list-item": "2.1.12", "@tiptap/extension-ordered-list": "2.1.12", "@tiptap/extension-paragraph": "2.1.12", "@tiptap/extension-placeholder": "2.1.12", "@tiptap/extension-strike": "2.1.12", "@tiptap/extension-table": "2.1.12", "@tiptap/extension-table-cell": "2.1.12", "@tiptap/extension-table-header": "2.1.12", "@tiptap/extension-table-row": "2.1.12", "@tiptap/extension-task-item": "2.1.12", "@tiptap/extension-task-list": "2.1.12", "@tiptap/extension-text": "2.1.12", "@tiptap/extension-typography": "2.1.12", "@tiptap/extension-underline": "2.1.12", "@tiptap/pm": "2.1.12", "@tiptap/suggestion": "2.1.12", "@tiptap/vue-3": "2.1.12", "@types/is-touch-device": "1.0.2", "@types/lodash.clonedeep": "4.5.9", "@types/sortablejs": "1.15.4", "@vueuse/core": "10.5.0", "@vueuse/router": "10.5.0", "axios": "1.6.0", "blurhash": "2.0.5", "bulma-css-variables": "0.9.33", "camel-case": "4.1.2", "date-fns": "2.30.0", "dayjs": "1.11.10", "dompurify": "3.0.6", "fast-deep-equal": "3.1.3", "flatpickr": "4.6.13", "flexsearch": "0.7.31", "floating-vue": "2.0.0-beta.24", "is-touch-device": "1.0.1", "klona": "2.0.6", "lodash.debounce": "4.0.8", "lowlight": "2.9.0", "pinia": "2.1.7", "register-service-worker": "1.7.2", "snake-case": "3.0.4", "sortablejs": "1.15.0", "tippy.js": "6.3.7", "ufo": "1.3.1", "vue": "3.3.8", "vue-advanced-cropper": "2.8.8", "vue-flatpickr-component": "11.0.3", "vue-i18n": "9.6.5", "vue-router": "4.2.5", "workbox-precaching": "7.0.0", "zhyswan-vuedraggable": "4.1.3" }, "devDependencies": { "@4tw/cypress-drag-drop": "2.2.5", "@cypress/vite-dev-server": "5.0.6", "@cypress/vue": "6.0.0", "@faker-js/faker": "8.3.1", "@histoire/plugin-screenshot": "0.17.0", "@histoire/plugin-vue": "0.17.5", "@rushstack/eslint-patch": "1.5.1", "@tsconfig/node18": "18.2.2", "@types/codemirror": "5.60.13", "@types/dompurify": "3.0.5", "@types/flexsearch": "0.7.6", "@types/is-touch-device": "1.0.2", "@types/lodash.debounce": "4.0.9", "@types/marked": "5.0.2", "@types/node": "20.9.0", "@types/postcss-preset-env": "7.7.0", "@types/sortablejs": "1.15.5", "@typescript-eslint/eslint-plugin": "6.11.0", "@typescript-eslint/parser": "6.11.0", "@vitejs/plugin-legacy": "4.1.1", "@vitejs/plugin-vue": "4.4.1", "@vue/eslint-config-typescript": "12.0.0", "@vue/test-utils": "2.4.2", "@vue/tsconfig": "0.4.0", "autoprefixer": "10.4.16", "browserslist": "4.22.1", "caniuse-lite": "1.0.30001562", "css-has-pseudo": "6.0.0", "csstype": "3.1.2", "cypress": "13.5.1", "esbuild": "0.19.5", "eslint": "8.53.0", "eslint-plugin-vue": "9.18.1", "happy-dom": "12.10.3", "histoire": "0.17.5", "postcss": "8.4.31", "postcss-easing-gradients": "3.0.1", "postcss-easings": "4.0.0", "postcss-focus-within": "8.0.0", "postcss-preset-env": "9.3.0", "rollup": "4.4.1", "rollup-plugin-visualizer": "5.9.2", "sass": "1.69.5", "start-server-and-test": "2.0.2", "typescript": "5.2.2", "vite": "4.5.0", "vite-plugin-inject-preload": "1.3.3", "vite-plugin-pwa": "0.16.7", "vite-plugin-sentry": "1.3.0", "vite-svg-loader": "4.0.0", "vitest": "0.34.6", "vue-tsc": "1.8.22", "wait-on": "7.2.0", "workbox-cli": "7.0.0" }, "pnpm": { "patchedDependencies": { "flexsearch@0.7.31": "patches/flexsearch@0.7.31.patch" } } }