{ "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.11.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", "test:e2e": "start-server-and-test preview http://127.0.0.1:4173 'cypress run --e2e --browser chrome'", "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": { "@fortawesome/fontawesome-svg-core": "6.7.2", "@fortawesome/free-regular-svg-icons": "6.7.2", "@fortawesome/free-solid-svg-icons": "6.7.2", "@fortawesome/vue-fontawesome": "3.0.8", "@github/hotkey": "3.1.1", "@infectoone/vue-ganttastic": "2.3.2", "@intlify/unplugin-vue-i18n": "6.0.8", "@kyvg/vue3-notification": "3.4.1", "@sentry/tracing": "7.120.3", "@sentry/vue": "9.22.0", "@tiptap/core": "2.12.0", "@tiptap/extension-code-block": "2.12.0", "@tiptap/extension-code-block-lowlight": "2.12.0", "@tiptap/extension-hard-break": "2.12.0", "@tiptap/extension-image": "2.12.0", "@tiptap/extension-link": "2.12.0", "@tiptap/extension-placeholder": "2.12.0", "@tiptap/extension-table": "2.12.0", "@tiptap/extension-table-cell": "2.12.0", "@tiptap/extension-table-header": "2.12.0", "@tiptap/extension-table-row": "2.12.0", "@tiptap/extension-task-item": "2.12.0", "@tiptap/extension-task-list": "2.12.0", "@tiptap/extension-typography": "2.12.0", "@tiptap/extension-underline": "2.12.0", "@tiptap/pm": "2.12.0", "@tiptap/starter-kit": "2.12.0", "@tiptap/suggestion": "2.12.0", "@tiptap/vue-3": "2.12.0", "@vueuse/core": "13.2.0", "@vueuse/router": "13.2.0", "axios": "1.9.0", "blurhash": "2.0.5", "bulma-css-variables": "0.9.33", "change-case": "5.4.4", "dayjs": "1.11.13", "dompurify": "3.2.6", "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": "15.0.12", "pinia": "3.0.2", "register-service-worker": "1.7.2", "sortablejs": "1.15.6", "tailwindcss": "3.4.17", "tippy.js": "6.3.7", "ufo": "1.6.1", "vue": "3.5.14", "vue-advanced-cropper": "2.8.9", "vue-flatpickr-component": "11.0.5", "vue-i18n": "11.1.3", "vue-router": "4.5.1", "vuemoji-picker": "0.3.2", "workbox-precaching": "7.3.0", "zhyswan-vuedraggable": "4.1.3" }, "devDependencies": { "@4tw/cypress-drag-drop": "2.3.0", "@cypress/vite-dev-server": "6.0.3", "@cypress/vue": "6.0.2", "@faker-js/faker": "9.8.0", "@histoire/plugin-screenshot": "1.0.0-alpha.2", "@histoire/plugin-vue": "1.0.0-alpha.2", "@tsconfig/node22": "22.0.2", "@types/codemirror": "5.60.15", "@types/is-touch-device": "1.0.3", "@types/node": "22.15.21", "@types/sortablejs": "1.15.8", "@typescript-eslint/eslint-plugin": "8.32.1", "@typescript-eslint/parser": "8.32.1", "@vitejs/plugin-vue": "5.2.4", "@vue/eslint-config-typescript": "14.5.0", "@vue/test-utils": "2.4.6", "@vue/tsconfig": "0.7.0", "autoprefixer": "10.4.21", "browserslist": "4.24.5", "caniuse-lite": "1.0.30001718", "csstype": "3.1.3", "cypress": "14.4.0", "esbuild": "0.25.4", "eslint": "9.27.0", "eslint-plugin-vue": "10.1.0", "happy-dom": "17.4.7", "histoire": "1.0.0-alpha.2", "postcss": "8.5.3", "postcss-easing-gradients": "3.0.1", "postcss-preset-env": "10.1.6", "rollup": "4.41.0", "rollup-plugin-visualizer": "5.14.0", "sass-embedded": "1.89.0", "start-server-and-test": "2.0.12", "typescript": "5.8.3", "unplugin-inject-preload": "3.0.0", "vite": "6.3.5", "vite-plugin-pwa": "1.0.0", "vite-plugin-sentry": "1.4.1", "vite-plugin-vue-devtools": "7.7.6", "vite-svg-loader": "5.1.0", "vitest": "3.1.4", "vue-tsc": "2.2.10", "wait-on": "8.0.3", "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" ] } }