{ "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.28.1", "engines": { "node": ">=24.0.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": "playwright test", "test:e2e:headed": "playwright test --headed", "test:e2e:ui": "playwright test --ui-host=0.0.0.0", "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.1.0", "@fortawesome/free-regular-svg-icons": "7.1.0", "@fortawesome/free-solid-svg-icons": "7.1.0", "@fortawesome/vue-fontawesome": "3.1.3", "@github/hotkey": "3.1.1", "@intlify/unplugin-vue-i18n": "11.0.3", "@kyvg/vue3-notification": "3.4.2", "@sentry/vue": "10.36.0", "@tiptap/core": "3.8.0", "@tiptap/extension-code-block-lowlight": "3.8.0", "@tiptap/extension-hard-break": "3.8.0", "@tiptap/extension-image": "3.8.0", "@tiptap/extension-link": "3.8.0", "@tiptap/extension-list": "3.8.0", "@tiptap/extension-mention": "3.8.0", "@tiptap/extension-table": "3.8.0", "@tiptap/extension-typography": "3.8.0", "@tiptap/extension-underline": "3.8.0", "@tiptap/extensions": "3.8.0", "@tiptap/pm": "3.8.0", "@tiptap/starter-kit": "3.8.0", "@tiptap/suggestion": "3.8.0", "@tiptap/vue-3": "3.8.0", "@vueuse/core": "14.1.0", "@vueuse/router": "14.1.0", "axios": "1.13.2", "blurhash": "2.0.5", "bulma-css-variables": "0.9.33", "change-case": "5.4.4", "dayjs": "1.11.19", "dompurify": "3.3.1", "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": "17.0.1", "nanoid": "5.1.6", "pinia": "3.0.4", "register-service-worker": "1.7.2", "sortablejs": "1.15.6", "tailwindcss": "3.4.19", "ufo": "1.6.3", "vue": "3.5.27", "vue-advanced-cropper": "2.8.9", "vue-flatpickr-component": "11.0.5", "vue-i18n": "11.2.8", "vue-router": "4.6.4", "vuemoji-picker": "0.3.2", "workbox-precaching": "7.4.0", "zhyswan-vuedraggable": "4.1.3" }, "devDependencies": { "@faker-js/faker": "10.2.0", "@histoire/plugin-screenshot": "1.0.0-beta.1", "@histoire/plugin-vue": "1.0.0-beta.1", "@playwright/test": "1.57.0", "@tsconfig/node24": "24.0.4", "@types/codemirror": "5.60.17", "@types/is-touch-device": "1.0.3", "@types/node": "24.10.9", "@types/sortablejs": "1.15.9", "@typescript-eslint/eslint-plugin": "8.53.1", "@typescript-eslint/parser": "8.53.1", "@vitejs/plugin-vue": "6.0.3", "@vue/eslint-config-typescript": "14.6.0", "@vue/test-utils": "2.4.6", "@vue/tsconfig": "0.8.1", "@vueuse/shared": "14.1.0", "autoprefixer": "10.4.23", "browserslist": "4.28.1", "caniuse-lite": "1.0.30001765", "csstype": "3.2.3", "esbuild": "0.27.2", "eslint": "9.39.2", "eslint-plugin-vue": "10.7.0", "happy-dom": "20.3.4", "histoire": "1.0.0-beta.1", "postcss": "8.5.6", "postcss-easing-gradients": "3.0.1", "postcss-preset-env": "11.1.1", "rollup": "4.55.3", "rollup-plugin-visualizer": "6.0.5", "sass-embedded": "1.97.3", "stylelint": "17.0.0", "stylelint-config-property-sort-order-smacss": "10.0.0", "stylelint-config-recommended-vue": "1.6.1", "stylelint-config-standard-scss": "17.0.0", "stylelint-use-logical": "2.1.2", "typescript": "5.9.3", "unplugin-inject-preload": "3.0.0", "vite": "7.3.1", "vite-plugin-pwa": "1.2.0", "vite-plugin-sentry": "1.4.1", "vite-plugin-vue-devtools": "8.0.5", "vite-svg-loader": "5.1.0", "vitest": "4.0.18", "vue-tsc": "3.2.2", "wait-on": "9.0.3", "workbox-cli": "7.4.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", "esbuild", "puppeteer", "vue-demi" ] } }